diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 00c2ba7a7fb..d6a3ddacc48 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -66,7 +66,6 @@ import { PolicyApiService } from "@bitwarden/common/services/policy/policy-api.s import { ProviderService } from "@bitwarden/common/services/provider.service"; import { SearchService } from "@bitwarden/common/services/search.service"; import { SendService } from "@bitwarden/common/services/send.service"; -import { SettingsService } from "@bitwarden/common/services/settings.service"; import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service"; import { SyncService } from "@bitwarden/common/services/sync/sync.service"; import { SyncNotifierService } from "@bitwarden/common/services/sync/syncNotifier.service"; @@ -93,6 +92,7 @@ import { BrowserEnvironmentService } from "../services/browser-environment.servi import { BrowserFolderService } from "../services/browser-folder.service"; import { BrowserOrganizationService } from "../services/browser-organization.service"; import { BrowserPolicyService } from "../services/browser-policy.service"; +import { BrowserSettingsService } from "../services/browser-settings.service"; import { BrowserStateService } from "../services/browser-state.service"; import { BrowserCryptoService } from "../services/browserCrypto.service"; import BrowserLocalStorageService from "../services/browserLocalStorage.service"; @@ -282,7 +282,7 @@ export default class MainBackground { this.appIdService, (expired: boolean) => this.logout(expired) ); - this.settingsService = new SettingsService(this.stateService); + this.settingsService = new BrowserSettingsService(this.stateService); this.fileUploadService = new FileUploadService(this.logService, this.apiService); this.cipherService = new CipherService( this.cryptoService, diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index 41dabd9e166..ddfc8a675f1 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -67,6 +67,7 @@ import { BrowserStateService as StateServiceAbstraction } from "../../services/a import { BrowserEnvironmentService } from "../../services/browser-environment.service"; import { BrowserOrganizationService } from "../../services/browser-organization.service"; import { BrowserPolicyService } from "../../services/browser-policy.service"; +import { BrowserSettingsService } from "../../services/browser-settings.service"; import { BrowserStateService } from "../../services/browser-state.service"; import { BrowserFileDownloadService } from "../../services/browserFileDownloadService"; import BrowserMessagingService from "../../services/browserMessaging.service"; @@ -228,8 +229,10 @@ function getBgService(service: keyof MainBackground) { { provide: SyncService, useFactory: getBgService("syncService"), deps: [] }, { provide: SettingsService, - useFactory: getBgService("settingsService"), - deps: [], + useFactory: (stateService: StateService) => { + return new BrowserSettingsService(stateService); + }, + deps: [StateService], }, { provide: AbstractStorageService, diff --git a/apps/browser/src/services/browser-settings.service.ts b/apps/browser/src/services/browser-settings.service.ts new file mode 100644 index 00000000000..78b4f76ea6a --- /dev/null +++ b/apps/browser/src/services/browser-settings.service.ts @@ -0,0 +1,11 @@ +import { BehaviorSubject } from "rxjs"; + +import { AccountSettingsSettings } from "@bitwarden/common/models/domain/account"; +import { SettingsService } from "@bitwarden/common/services/settings.service"; + +import { sessionSync } from "../decorators/session-sync-observable"; + +export class BrowserSettingsService extends SettingsService { + @sessionSync({ initializer: (obj: string[][]) => obj }) + protected _settings: BehaviorSubject; +} diff --git a/libs/common/src/models/domain/account.ts b/libs/common/src/models/domain/account.ts index 9fe36001d03..0715b0c49b6 100644 --- a/libs/common/src/models/domain/account.ts +++ b/libs/common/src/models/domain/account.ts @@ -251,7 +251,7 @@ export class AccountSettings { } export type AccountSettingsSettings = { - equivalentDomains?: { [id: string]: any }; + equivalentDomains?: string[][]; }; export class AccountTokens { diff --git a/libs/common/src/services/cipher.service.ts b/libs/common/src/services/cipher.service.ts index a7b54942e2c..b93c60d6228 100644 --- a/libs/common/src/services/cipher.service.ts +++ b/libs/common/src/services/cipher.service.ts @@ -412,7 +412,7 @@ export class CipherService implements CipherServiceAbstraction { : firstValueFrom(this.settingsService.settings$).then( (settings: AccountSettingsSettings) => { let matches: any[] = []; - settings.equivalentDomains?.forEach((eqDomain: any) => { + settings?.equivalentDomains?.forEach((eqDomain: any) => { if (eqDomain.length && eqDomain.indexOf(domain) >= 0) { matches = matches.concat(eqDomain); } diff --git a/libs/common/src/services/settings.service.ts b/libs/common/src/services/settings.service.ts index 923bd8970dd..4a6986e37f1 100644 --- a/libs/common/src/services/settings.service.ts +++ b/libs/common/src/services/settings.service.ts @@ -6,7 +6,7 @@ import { Utils } from "../misc/utils"; import { AccountSettingsSettings } from "../models/domain/account"; export class SettingsService implements SettingsServiceAbstraction { - private _settings: BehaviorSubject = new BehaviorSubject({}); + protected _settings: BehaviorSubject = new BehaviorSubject({}); settings$ = this._settings.asObservable();