mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 07:43:35 +00:00
[PM-5276] Migrate FolderService to state providers (#7682)
* added state definitionand key definition for folder service * added data migrations * created folder to house key definitions * deleted browser-folder-service and added state provider to the browser * exposed decrypt function so it can be used by the key definition, updated folder service to use state provider * removed memory since derived state is now used * updated test cases * updated test cases * updated migrations after merge conflict fix * added state provider to the folder service constructor * renamed migration file * updated comments * updated comments * removed service registartion from browser service module and removed unused set and get encrypted folders from state service * renamed files * added storage location overides and removed extra methods
This commit is contained in:
@@ -126,6 +126,7 @@ import { Fido2AuthenticatorService } from "@bitwarden/common/vault/services/fido
|
||||
import { Fido2ClientService } from "@bitwarden/common/vault/services/fido2/fido2-client.service";
|
||||
import { CipherFileUploadService } from "@bitwarden/common/vault/services/file-upload/cipher-file-upload.service";
|
||||
import { FolderApiService } from "@bitwarden/common/vault/services/folder/folder-api.service";
|
||||
import { FolderService } from "@bitwarden/common/vault/services/folder/folder.service";
|
||||
import { SyncNotifierService } from "@bitwarden/common/vault/services/sync/sync-notifier.service";
|
||||
import { SyncService } from "@bitwarden/common/vault/services/sync/sync.service";
|
||||
import { TotpService } from "@bitwarden/common/vault/services/totp.service";
|
||||
@@ -181,7 +182,6 @@ import VaultTimeoutService from "../services/vault-timeout/vault-timeout.service
|
||||
import FilelessImporterBackground from "../tools/background/fileless-importer.background";
|
||||
import { BrowserFido2UserInterfaceService } from "../vault/fido2/browser-fido2-user-interface.service";
|
||||
import { Fido2Service as Fido2ServiceAbstraction } from "../vault/services/abstractions/fido2.service";
|
||||
import { BrowserFolderService } from "../vault/services/browser-folder.service";
|
||||
import Fido2Service from "../vault/services/fido2.service";
|
||||
import { VaultFilterService } from "../vault/services/vault-filter.service";
|
||||
|
||||
@@ -546,11 +546,12 @@ export default class MainBackground {
|
||||
this.cipherFileUploadService,
|
||||
this.configService,
|
||||
);
|
||||
this.folderService = new BrowserFolderService(
|
||||
this.folderService = new FolderService(
|
||||
this.cryptoService,
|
||||
this.i18nService,
|
||||
this.cipherService,
|
||||
this.stateService,
|
||||
this.stateProvider,
|
||||
);
|
||||
this.folderApiService = new FolderApiService(this.folderService, this.apiService);
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ import { CollectionService } from "@bitwarden/common/vault/abstractions/collecti
|
||||
import { CipherFileUploadService } from "@bitwarden/common/vault/abstractions/file-upload/cipher-file-upload.service";
|
||||
import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction";
|
||||
import {
|
||||
FolderService,
|
||||
FolderService as FolderServiceAbstraction,
|
||||
InternalFolderService,
|
||||
} from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
||||
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
|
||||
@@ -116,7 +116,6 @@ import { ForegroundMemoryStorageService } from "../../platform/storage/foregroun
|
||||
import { BrowserSendService } from "../../services/browser-send.service";
|
||||
import { BrowserSettingsService } from "../../services/browser-settings.service";
|
||||
import { FilePopoutUtilsService } from "../../tools/popup/services/file-popout-utils.service";
|
||||
import { BrowserFolderService } from "../../vault/services/browser-folder.service";
|
||||
import { VaultFilterService } from "../../vault/services/vault-filter.service";
|
||||
|
||||
import { DebounceNavigationService } from "./debounce-navigation.service";
|
||||
@@ -213,21 +212,9 @@ function getBgService<T>(service: keyof MainBackground) {
|
||||
provide: FileUploadService,
|
||||
useFactory: getBgService<FileUploadService>("fileUploadService"),
|
||||
},
|
||||
{
|
||||
provide: FolderService,
|
||||
useFactory: (
|
||||
cryptoService: CryptoService,
|
||||
i18nService: I18nServiceAbstraction,
|
||||
cipherService: CipherService,
|
||||
stateService: StateServiceAbstraction,
|
||||
) => {
|
||||
return new BrowserFolderService(cryptoService, i18nService, cipherService, stateService);
|
||||
},
|
||||
deps: [CryptoService, I18nServiceAbstraction, CipherService, StateServiceAbstraction],
|
||||
},
|
||||
{
|
||||
provide: InternalFolderService,
|
||||
useExisting: FolderService,
|
||||
useExisting: FolderServiceAbstraction,
|
||||
},
|
||||
{
|
||||
provide: FolderApiServiceAbstraction,
|
||||
@@ -438,7 +425,7 @@ function getBgService<T>(service: keyof MainBackground) {
|
||||
useFactory: (
|
||||
stateService: StateServiceAbstraction,
|
||||
organizationService: OrganizationService,
|
||||
folderService: FolderService,
|
||||
folderService: FolderServiceAbstraction,
|
||||
policyService: PolicyService,
|
||||
accountService: AccountServiceAbstraction,
|
||||
) => {
|
||||
@@ -455,7 +442,7 @@ function getBgService<T>(service: keyof MainBackground) {
|
||||
deps: [
|
||||
StateServiceAbstraction,
|
||||
OrganizationService,
|
||||
FolderService,
|
||||
FolderServiceAbstraction,
|
||||
PolicyService,
|
||||
AccountServiceAbstraction,
|
||||
],
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { FolderService as AbstractFolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
||||
import { FolderService } from "@bitwarden/common/vault/services/folder/folder.service";
|
||||
|
||||
import {
|
||||
CryptoServiceInitOptions,
|
||||
@@ -13,11 +14,11 @@ import {
|
||||
i18nServiceFactory,
|
||||
I18nServiceInitOptions,
|
||||
} from "../../../platform/background/service-factories/i18n-service.factory";
|
||||
import { stateProviderFactory } from "../../../platform/background/service-factories/state-provider.factory";
|
||||
import {
|
||||
stateServiceFactory as stateServiceFactory,
|
||||
StateServiceInitOptions,
|
||||
} from "../../../platform/background/service-factories/state-service.factory";
|
||||
import { BrowserFolderService } from "../../services/browser-folder.service";
|
||||
|
||||
import { cipherServiceFactory, CipherServiceInitOptions } from "./cipher-service.factory";
|
||||
|
||||
@@ -38,11 +39,12 @@ export function folderServiceFactory(
|
||||
"folderService",
|
||||
opts,
|
||||
async () =>
|
||||
new BrowserFolderService(
|
||||
new FolderService(
|
||||
await cryptoServiceFactory(cache, opts),
|
||||
await i18nServiceFactory(cache, opts),
|
||||
await cipherServiceFactory(cache, opts),
|
||||
await stateServiceFactory(cache, opts),
|
||||
await stateProviderFactory(cache, opts),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
import { BehaviorSubject } from "rxjs";
|
||||
|
||||
import { Folder } from "@bitwarden/common/vault/models/domain/folder";
|
||||
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
||||
import { FolderService as BaseFolderService } from "@bitwarden/common/vault/services/folder/folder.service";
|
||||
|
||||
import { browserSession, sessionSync } from "../../platform/decorators/session-sync-observable";
|
||||
|
||||
@browserSession
|
||||
export class BrowserFolderService extends BaseFolderService {
|
||||
@sessionSync({ initializer: Folder.fromJSON, initializeAs: "array" })
|
||||
protected _folders: BehaviorSubject<Folder[]>;
|
||||
@sessionSync({ initializer: FolderView.fromJSON, initializeAs: "array" })
|
||||
protected _folderViews: BehaviorSubject<FolderView[]>;
|
||||
}
|
||||
@@ -454,6 +454,7 @@ export class Main {
|
||||
this.i18nService,
|
||||
this.cipherService,
|
||||
this.stateService,
|
||||
this.stateProvider,
|
||||
);
|
||||
|
||||
this.folderApiService = new FolderApiService(this.folderService, this.apiService);
|
||||
|
||||
@@ -19,7 +19,6 @@ import { StateService as BaseStateService } from "@bitwarden/common/platform/ser
|
||||
import { SendData } from "@bitwarden/common/tools/send/models/data/send.data";
|
||||
import { CipherData } from "@bitwarden/common/vault/models/data/cipher.data";
|
||||
import { CollectionData } from "@bitwarden/common/vault/models/data/collection.data";
|
||||
import { FolderData } from "@bitwarden/common/vault/models/data/folder.data";
|
||||
|
||||
import { Account } from "./account";
|
||||
import { GlobalState } from "./global-state";
|
||||
@@ -82,19 +81,6 @@ export class StateService extends BaseStateService<GlobalState, Account> {
|
||||
return await super.setEncryptedCollections(value, options);
|
||||
}
|
||||
|
||||
async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> {
|
||||
options = this.reconcileOptions(options, await this.defaultInMemoryOptions());
|
||||
return await super.getEncryptedFolders(options);
|
||||
}
|
||||
|
||||
async setEncryptedFolders(
|
||||
value: { [id: string]: FolderData },
|
||||
options?: StorageOptions,
|
||||
): Promise<void> {
|
||||
options = this.reconcileOptions(options, await this.defaultInMemoryOptions());
|
||||
return await super.setEncryptedFolders(value, options);
|
||||
}
|
||||
|
||||
async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> {
|
||||
options = this.reconcileOptions(options, await this.defaultInMemoryOptions());
|
||||
return await super.getEncryptedSends(options);
|
||||
|
||||
Reference in New Issue
Block a user