1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-06 00:03:29 +00:00

Make Organization into a reactive data service

This commit is contained in:
Hinton
2022-05-12 10:03:05 +02:00
parent 1370006f6e
commit fa7b1e3e20
2 changed files with 11 additions and 1 deletions

View File

@@ -1,7 +1,11 @@
import { Observable } from "rxjs";
import { OrganizationData } from "../models/data/organizationData";
import { Organization } from "../models/domain/organization";
export abstract class OrganizationService {
organizations$: Observable<Organization[]>;
get: (id: string) => Promise<Organization>;
getByIdentifier: (identifier: string) => Promise<Organization>;
getAll: (userId?: string) => Promise<Organization[]>;

View File

@@ -1,9 +1,14 @@
import { BehaviorSubject, Observable } from "rxjs";
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 {
private _organizations$ = new BehaviorSubject<Organization[]>([]);
organizations$: Observable<Organization[]> = this._organizations$.asObservable();
constructor(private stateService: StateService) {}
async get(id: string): Promise<Organization> {
@@ -38,7 +43,8 @@ export class OrganizationService implements OrganizationServiceAbstraction {
}
async save(organizations: { [id: string]: OrganizationData }) {
return await this.stateService.setOrganizations(organizations);
await this.stateService.setOrganizations(organizations);
await this._organizations$.next(await this.getAll());
}
async canManageSponsorships(): Promise<boolean> {