mirror of
https://github.com/bitwarden/jslib
synced 2025-12-29 14:43:17 +00:00
[refactor] Create helper services for managing organization and provider state data
This commit is contained in:
10
common/src/abstractions/organization.service.ts
Normal file
10
common/src/abstractions/organization.service.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { OrganizationData } from '../models/data/organizationData';
|
||||
|
||||
import { Organization } from '../models/domain/organization';
|
||||
|
||||
export abstract class OrganizationService {
|
||||
get: (id: string) => Promise<Organization>;
|
||||
getByIdentifier: (identifier: string) => Promise<Organization>;
|
||||
getAll: () => Promise<Organization[]>;
|
||||
save: (orgs: {[id: string]: OrganizationData}) => Promise<any>;
|
||||
}
|
||||
9
common/src/abstractions/provider.service.ts
Normal file
9
common/src/abstractions/provider.service.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { ProviderData } from '../models/data/providerData';
|
||||
|
||||
import { Provider } from '../models/domain/provider';
|
||||
|
||||
export abstract class ProviderService {
|
||||
get: (id: string) => Promise<Provider>;
|
||||
getAll: () => Promise<Provider[]>;
|
||||
save: (providers: {[id: string]: ProviderData}) => Promise<any>;
|
||||
}
|
||||
44
common/src/services/organization.service.ts
Normal file
44
common/src/services/organization.service.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { OrganizationService as OrganizationServiceAbstraction } from '../abstractions/organization.service';
|
||||
import { StateService } from '../abstractions/state.service';
|
||||
|
||||
import { OrganizationData } from '../models/data/organizationData';
|
||||
|
||||
import { Organization } from '../models/domain/organization';
|
||||
|
||||
export class OrganizationService implements OrganizationServiceAbstraction {
|
||||
constructor(private stateService: StateService) {
|
||||
}
|
||||
|
||||
async get(id: string): Promise<Organization> {
|
||||
const organizations = await this.stateService.getOrganizations();
|
||||
if (organizations == null || !organizations.hasOwnProperty(id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Organization(organizations[id]);
|
||||
}
|
||||
|
||||
async getByIdentifier(identifier: string): Promise<Organization> {
|
||||
const organizations = await this.getAll();
|
||||
if (organizations == null || organizations.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return organizations.find(o => o.identifier === identifier);
|
||||
}
|
||||
|
||||
async getAll(): Promise<Organization[]> {
|
||||
const organizations = await this.stateService.getOrganizations();
|
||||
const response: Organization[] = [];
|
||||
for (const id in organizations) {
|
||||
if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {
|
||||
response.push(new Organization(organizations[id]));
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
async save(organizations: {[id: string]: OrganizationData}) {
|
||||
return await this.stateService.setOrganizations(organizations);
|
||||
}
|
||||
}
|
||||
35
common/src/services/provider.service.ts
Normal file
35
common/src/services/provider.service.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { ProviderService as ProviderServiceAbstraction } from '../abstractions/provider.service';
|
||||
import { StateService } from '../abstractions/state.service';
|
||||
|
||||
import { ProviderData } from '../models/data/providerData';
|
||||
|
||||
import { Provider } from '../models/domain/provider';
|
||||
|
||||
export class ProviderService implements ProviderServiceAbstraction {
|
||||
constructor(private stateService: StateService) {
|
||||
}
|
||||
|
||||
async get(id: string): Promise<Provider> {
|
||||
const providers = await this.stateService.getProviders();
|
||||
if (providers == null || !providers.hasOwnProperty(id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Provider(providers[id]);
|
||||
}
|
||||
|
||||
async getAll(): Promise<Provider[]> {
|
||||
const providers = await this.stateService.getProviders();
|
||||
const response: Provider[] = [];
|
||||
for (const id in providers) {
|
||||
if (providers.hasOwnProperty(id)) {
|
||||
response.push(new Provider(providers[id]));
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
async save(providers: { [id: string]: ProviderData; }) {
|
||||
await this.stateService.setProviders(providers);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user