From e8f2ae0a7b20a54fa4977dca4209e5be06be0937 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Fri, 25 Mar 2022 13:05:30 +1000 Subject: [PATCH] StateService InjectionTokens --- angular/src/services/jslib-services.module.ts | 31 +++++++------------ common/src/abstractions/injectionTokens.ts | 5 +++ common/src/services/state.service.ts | 10 ++++-- 3 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 common/src/abstractions/injectionTokens.ts diff --git a/angular/src/services/jslib-services.module.ts b/angular/src/services/jslib-services.module.ts index daf6b694..8aeec5ed 100644 --- a/angular/src/services/jslib-services.module.ts +++ b/angular/src/services/jslib-services.module.ts @@ -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 { 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 { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.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 { LogService } from "jslib-common/abstractions/log.service"; import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service"; @@ -293,27 +294,17 @@ import { ValidationService } from "./validation.service"; StateServiceAbstraction, ], }, + { + provide: STATE_SERVICE_USE_CACHE, + useValue: true, + }, + { + provide: STATE_FACTORY, + useFactory: () => new StateFactory(GlobalState, Account) + }, { provide: StateServiceAbstraction, - useFactory: ( - storageService: StorageServiceAbstraction, - secureStorageService: StorageServiceAbstraction, - logService: LogService, - stateMigrationService: StateMigrationServiceAbstraction - ) => - new StateService( - storageService, - secureStorageService, - logService, - stateMigrationService, - new StateFactory(GlobalState, Account) - ), - deps: [ - StorageServiceAbstraction, - "SECURE_STORAGE", - LogService, - StateMigrationServiceAbstraction, - ], + useClass: StateService }, { provide: StateMigrationServiceAbstraction, diff --git a/common/src/abstractions/injectionTokens.ts b/common/src/abstractions/injectionTokens.ts new file mode 100644 index 00000000..f69abe22 --- /dev/null +++ b/common/src/abstractions/injectionTokens.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; +import { StateFactory } from '../factories/stateFactory'; + +export const STATE_SERVICE_USE_CACHE = new InjectionToken('STATE_SERVICE_USE_CACHE'); +export const STATE_FACTORY = new InjectionToken('STATE_FACTORY'); diff --git a/common/src/services/state.service.ts b/common/src/services/state.service.ts index 4d3aa3b3..0a438949 100644 --- a/common/src/services/state.service.ts +++ b/common/src/services/state.service.ts @@ -1,3 +1,4 @@ +import { Inject, Injectable } from '@angular/core'; import { BehaviorSubject } from "rxjs"; import { LogService } from "../abstractions/log.service"; @@ -33,6 +34,8 @@ import { CollectionView } from "../models/view/collectionView"; import { FolderView } from "../models/view/folderView"; import { SendView } from "../models/view/sendView"; +import { STATE_FACTORY, STATE_SERVICE_USE_CACHE } from "../abstractions/injectionTokens"; + const keys = { global: "global", authenticatedAccounts: "authenticatedAccounts", @@ -47,6 +50,7 @@ const partialKeys = { masterKey: "_masterkey", }; +@Injectable() export class StateService< TGlobalState extends GlobalState = GlobalState, TAccount extends Account = Account @@ -65,11 +69,11 @@ export class StateService< constructor( protected storageService: StorageService, - protected secureStorageService: StorageService, + @Inject("SECURE_STORAGE") protected secureStorageService: StorageService, protected logService: LogService, protected stateMigrationService: StateMigrationService, - protected stateFactory: StateFactory, - protected useAccountCache: boolean = true + @Inject(STATE_FACTORY) protected stateFactory: StateFactory, + @Inject(STATE_SERVICE_USE_CACHE) protected useAccountCache: boolean ) { this.accountDiskCache = new Map(); }