1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-23 19:53:55 +00:00

StateService InjectionTokens

This commit is contained in:
Thomas Rittson
2022-03-25 13:05:30 +10:00
parent eefcd5d22b
commit e8f2ae0a7b
3 changed files with 23 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
import { Injector, LOCALE_ID, NgModule } from "@angular/core"; import { InjectionToken, Injector, LOCALE_ID, NgModule } from "@angular/core";
import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service"; import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service";
import { AppIdService as AppIdServiceAbstraction } from "jslib-common/abstractions/appId.service"; import { AppIdService as AppIdServiceAbstraction } from "jslib-common/abstractions/appId.service";
@@ -15,6 +15,7 @@ import { ExportService as ExportServiceAbstraction } from "jslib-common/abstract
import { FileUploadService as FileUploadServiceAbstraction } from "jslib-common/abstractions/fileUpload.service"; import { FileUploadService as FileUploadServiceAbstraction } from "jslib-common/abstractions/fileUpload.service";
import { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.service"; import { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.service";
import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service"; import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service";
import { STATE_FACTORY, STATE_SERVICE_USE_CACHE } from 'jslib-common/abstractions/injectionTokens';
import { KeyConnectorService as KeyConnectorServiceAbstraction } from "jslib-common/abstractions/keyConnector.service"; import { KeyConnectorService as KeyConnectorServiceAbstraction } from "jslib-common/abstractions/keyConnector.service";
import { LogService } from "jslib-common/abstractions/log.service"; import { LogService } from "jslib-common/abstractions/log.service";
import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service"; import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service";
@@ -293,27 +294,17 @@ import { ValidationService } from "./validation.service";
StateServiceAbstraction, StateServiceAbstraction,
], ],
}, },
{
provide: STATE_SERVICE_USE_CACHE,
useValue: true,
},
{
provide: STATE_FACTORY,
useFactory: () => new StateFactory(GlobalState, Account)
},
{ {
provide: StateServiceAbstraction, provide: StateServiceAbstraction,
useFactory: ( useClass: StateService
storageService: StorageServiceAbstraction,
secureStorageService: StorageServiceAbstraction,
logService: LogService,
stateMigrationService: StateMigrationServiceAbstraction
) =>
new StateService(
storageService,
secureStorageService,
logService,
stateMigrationService,
new StateFactory(GlobalState, Account)
),
deps: [
StorageServiceAbstraction,
"SECURE_STORAGE",
LogService,
StateMigrationServiceAbstraction,
],
}, },
{ {
provide: StateMigrationServiceAbstraction, provide: StateMigrationServiceAbstraction,

View File

@@ -0,0 +1,5 @@
import { InjectionToken } from '@angular/core';
import { StateFactory } from '../factories/stateFactory';
export const STATE_SERVICE_USE_CACHE = new InjectionToken<boolean>('STATE_SERVICE_USE_CACHE');
export const STATE_FACTORY = new InjectionToken<StateFactory>('STATE_FACTORY');

View File

@@ -1,3 +1,4 @@
import { Inject, Injectable } from '@angular/core';
import { BehaviorSubject } from "rxjs"; import { BehaviorSubject } from "rxjs";
import { LogService } from "../abstractions/log.service"; import { LogService } from "../abstractions/log.service";
@@ -33,6 +34,8 @@ import { CollectionView } from "../models/view/collectionView";
import { FolderView } from "../models/view/folderView"; import { FolderView } from "../models/view/folderView";
import { SendView } from "../models/view/sendView"; import { SendView } from "../models/view/sendView";
import { STATE_FACTORY, STATE_SERVICE_USE_CACHE } from "../abstractions/injectionTokens";
const keys = { const keys = {
global: "global", global: "global",
authenticatedAccounts: "authenticatedAccounts", authenticatedAccounts: "authenticatedAccounts",
@@ -47,6 +50,7 @@ const partialKeys = {
masterKey: "_masterkey", masterKey: "_masterkey",
}; };
@Injectable()
export class StateService< export class StateService<
TGlobalState extends GlobalState = GlobalState, TGlobalState extends GlobalState = GlobalState,
TAccount extends Account = Account TAccount extends Account = Account
@@ -65,11 +69,11 @@ export class StateService<
constructor( constructor(
protected storageService: StorageService, protected storageService: StorageService,
protected secureStorageService: StorageService, @Inject("SECURE_STORAGE") protected secureStorageService: StorageService,
protected logService: LogService, protected logService: LogService,
protected stateMigrationService: StateMigrationService, protected stateMigrationService: StateMigrationService,
protected stateFactory: StateFactory<TGlobalState, TAccount>, @Inject(STATE_FACTORY) protected stateFactory: StateFactory<TGlobalState, TAccount>,
protected useAccountCache: boolean = true @Inject(STATE_SERVICE_USE_CACHE) protected useAccountCache: boolean
) { ) {
this.accountDiskCache = new Map<string, TAccount>(); this.accountDiskCache = new Map<string, TAccount>();
} }