mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 17:23:37 +00:00
Add OrganizationService to synced services
Co-Authored-By: Daniel James Smith <djsmith85@users.noreply.github.com>
This commit is contained in:
@@ -61,7 +61,6 @@ import { FolderApiService } from "@bitwarden/common/services/folder/folder-api.s
|
|||||||
import { KeyConnectorService } from "@bitwarden/common/services/keyConnector.service";
|
import { KeyConnectorService } from "@bitwarden/common/services/keyConnector.service";
|
||||||
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
|
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
|
||||||
import { NotificationsService } from "@bitwarden/common/services/notifications.service";
|
import { NotificationsService } from "@bitwarden/common/services/notifications.service";
|
||||||
import { OrganizationService } from "@bitwarden/common/services/organization/organization.service";
|
|
||||||
import { PasswordGenerationService } from "@bitwarden/common/services/passwordGeneration.service";
|
import { PasswordGenerationService } from "@bitwarden/common/services/passwordGeneration.service";
|
||||||
import { PolicyApiService } from "@bitwarden/common/services/policy/policy-api.service";
|
import { PolicyApiService } from "@bitwarden/common/services/policy/policy-api.service";
|
||||||
import { ProviderService } from "@bitwarden/common/services/provider.service";
|
import { ProviderService } from "@bitwarden/common/services/provider.service";
|
||||||
@@ -92,6 +91,7 @@ import { BrowserStateService as StateServiceAbstraction } from "../services/abst
|
|||||||
import AutofillService from "../services/autofill.service";
|
import AutofillService from "../services/autofill.service";
|
||||||
import { BrowserEnvironmentService } from "../services/browser-environment.service";
|
import { BrowserEnvironmentService } from "../services/browser-environment.service";
|
||||||
import { BrowserFolderService } from "../services/browser-folder.service";
|
import { BrowserFolderService } from "../services/browser-folder.service";
|
||||||
|
import { BrowserOrganizationService } from "../services/browser-organization.service";
|
||||||
import { BrowserPolicyService } from "../services/browser-policy.service";
|
import { BrowserPolicyService } from "../services/browser-policy.service";
|
||||||
import { BrowserStateService } from "../services/browser-state.service";
|
import { BrowserStateService } from "../services/browser-state.service";
|
||||||
import { BrowserCryptoService } from "../services/browserCrypto.service";
|
import { BrowserCryptoService } from "../services/browserCrypto.service";
|
||||||
@@ -317,7 +317,10 @@ export default class MainBackground {
|
|||||||
this.stateService
|
this.stateService
|
||||||
);
|
);
|
||||||
this.syncNotifierService = new SyncNotifierService();
|
this.syncNotifierService = new SyncNotifierService();
|
||||||
this.organizationService = new OrganizationService(this.stateService, this.syncNotifierService);
|
this.organizationService = new BrowserOrganizationService(
|
||||||
|
this.stateService,
|
||||||
|
this.syncNotifierService
|
||||||
|
);
|
||||||
this.policyService = new BrowserPolicyService(this.stateService, this.organizationService);
|
this.policyService = new BrowserPolicyService(this.stateService, this.organizationService);
|
||||||
this.policyApiService = new PolicyApiService(
|
this.policyApiService = new PolicyApiService(
|
||||||
this.policyService,
|
this.policyService,
|
||||||
|
|||||||
@@ -37,10 +37,14 @@ import { ProviderService } from "@bitwarden/common/abstractions/provider.service
|
|||||||
import { SearchService as SearchServiceAbstraction } from "@bitwarden/common/abstractions/search.service";
|
import { SearchService as SearchServiceAbstraction } from "@bitwarden/common/abstractions/search.service";
|
||||||
import { SendService } from "@bitwarden/common/abstractions/send.service";
|
import { SendService } from "@bitwarden/common/abstractions/send.service";
|
||||||
import { SettingsService } from "@bitwarden/common/abstractions/settings.service";
|
import { SettingsService } from "@bitwarden/common/abstractions/settings.service";
|
||||||
import { StateService as BaseStateServiceAbstraction } from "@bitwarden/common/abstractions/state.service";
|
import {
|
||||||
|
StateService as BaseStateServiceAbstraction,
|
||||||
|
StateService,
|
||||||
|
} from "@bitwarden/common/abstractions/state.service";
|
||||||
import { StateMigrationService } from "@bitwarden/common/abstractions/stateMigration.service";
|
import { StateMigrationService } from "@bitwarden/common/abstractions/stateMigration.service";
|
||||||
import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service";
|
import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service";
|
||||||
import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction";
|
import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction";
|
||||||
|
import { SyncNotifierService } from "@bitwarden/common/abstractions/sync/syncNotifier.service.abstraction";
|
||||||
import { TokenService } from "@bitwarden/common/abstractions/token.service";
|
import { TokenService } from "@bitwarden/common/abstractions/token.service";
|
||||||
import { TotpService } from "@bitwarden/common/abstractions/totp.service";
|
import { TotpService } from "@bitwarden/common/abstractions/totp.service";
|
||||||
import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service";
|
import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service";
|
||||||
@@ -61,6 +65,7 @@ import { Account } from "../../models/account";
|
|||||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||||
import { BrowserStateService as StateServiceAbstraction } from "../../services/abstractions/browser-state.service";
|
import { BrowserStateService as StateServiceAbstraction } from "../../services/abstractions/browser-state.service";
|
||||||
import { BrowserEnvironmentService } from "../../services/browser-environment.service";
|
import { BrowserEnvironmentService } from "../../services/browser-environment.service";
|
||||||
|
import { BrowserOrganizationService } from "../../services/browser-organization.service";
|
||||||
import { BrowserPolicyService } from "../../services/browser-policy.service";
|
import { BrowserPolicyService } from "../../services/browser-policy.service";
|
||||||
import { BrowserStateService } from "../../services/browser-state.service";
|
import { BrowserStateService } from "../../services/browser-state.service";
|
||||||
import { BrowserFileDownloadService } from "../../services/browserFileDownloadService";
|
import { BrowserFileDownloadService } from "../../services/browserFileDownloadService";
|
||||||
@@ -272,8 +277,10 @@ function getBgService<T>(service: keyof MainBackground) {
|
|||||||
{ provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },
|
{ provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },
|
||||||
{
|
{
|
||||||
provide: OrganizationService,
|
provide: OrganizationService,
|
||||||
useFactory: getBgService<OrganizationService>("organizationService"),
|
useFactory: (stateService: StateService, syncNotifierService: SyncNotifierService) => {
|
||||||
deps: [],
|
return new BrowserOrganizationService(stateService, syncNotifierService);
|
||||||
|
},
|
||||||
|
deps: [StateService, SyncNotifierService],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
provide: VaultFilterService,
|
provide: VaultFilterService,
|
||||||
|
|||||||
12
apps/browser/src/services/browser-organization.service.ts
Normal file
12
apps/browser/src/services/browser-organization.service.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { BehaviorSubject } from "rxjs";
|
||||||
|
|
||||||
|
import { Organization } from "@bitwarden/common/models/domain/organization";
|
||||||
|
import { OrganizationService } from "@bitwarden/common/services/organization/organization.service";
|
||||||
|
|
||||||
|
import { browserSession, sessionSync } from "../decorators/session-sync-observable";
|
||||||
|
|
||||||
|
@browserSession
|
||||||
|
export class BrowserOrganizationService extends OrganizationService {
|
||||||
|
@sessionSync({ initializer: Organization.fromJSON, initializeAs: "array" })
|
||||||
|
protected _organizations: BehaviorSubject<Organization[]>;
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { Jsonify } from "type-fest";
|
||||||
|
|
||||||
import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType";
|
import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType";
|
||||||
import { OrganizationUserType } from "../../enums/organizationUserType";
|
import { OrganizationUserType } from "../../enums/organizationUserType";
|
||||||
import { ProductType } from "../../enums/productType";
|
import { ProductType } from "../../enums/productType";
|
||||||
@@ -201,4 +203,11 @@ export class Organization {
|
|||||||
get hasProvider() {
|
get hasProvider() {
|
||||||
return this.providerId != null || this.providerName != null;
|
return this.providerId != null || this.providerName != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static fromJSON(json: Jsonify<Organization>) {
|
||||||
|
return Object.assign(new Organization(), json, {
|
||||||
|
familySponsorshipLastSyncDate: new Date(json.familySponsorshipLastSyncDate),
|
||||||
|
familySponsorshipValidUntil: new Date(json.familySponsorshipValidUntil),
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { Organization } from "../../models/domain/organization";
|
|||||||
import { isSuccessfullyCompleted } from "../../types/syncEventArgs";
|
import { isSuccessfullyCompleted } from "../../types/syncEventArgs";
|
||||||
|
|
||||||
export class OrganizationService implements OrganizationServiceAbstraction {
|
export class OrganizationService implements OrganizationServiceAbstraction {
|
||||||
private _organizations = new BehaviorSubject<Organization[]>([]);
|
protected _organizations = new BehaviorSubject<Organization[]>([]);
|
||||||
|
|
||||||
organizations$ = this._organizations.asObservable();
|
organizations$ = this._organizations.asObservable();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user