From 0590d603e384bfe13d46b8da93ac704e7026b178 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Fri, 25 Mar 2022 13:17:56 +1000 Subject: [PATCH] Use InjectionToken for Window --- angular/src/services/jslib-services.module.ts | 5 ++--- common/src/abstractions/injectionTokens.ts | 1 + common/src/services/webCryptoFunction.service.ts | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/angular/src/services/jslib-services.module.ts b/angular/src/services/jslib-services.module.ts index b8cbd197..ea08c900 100644 --- a/angular/src/services/jslib-services.module.ts +++ b/angular/src/services/jslib-services.module.ts @@ -15,7 +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 { STATE_FACTORY, STATE_SERVICE_USE_CACHE, WINDOW_TOKEN } 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"; @@ -84,7 +84,7 @@ import { ValidationService } from "./validation.service"; @NgModule({ declarations: [], providers: [ - { provide: "WINDOW", useValue: window }, + { provide: WINDOW_TOKEN, useValue: window }, { provide: LOCALE_ID, useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale, @@ -354,7 +354,6 @@ import { ValidationService } from "./validation.service"; { provide: CryptoFunctionServiceAbstraction, useClass: WebCryptoFunctionService, - deps: ["WINDOW"], }, { provide: EventServiceAbstraction, diff --git a/common/src/abstractions/injectionTokens.ts b/common/src/abstractions/injectionTokens.ts index a1497646..59699898 100644 --- a/common/src/abstractions/injectionTokens.ts +++ b/common/src/abstractions/injectionTokens.ts @@ -5,3 +5,4 @@ import { StorageService } from './storage.service'; export const STATE_SERVICE_USE_CACHE = new InjectionToken('STATE_SERVICE_USE_CACHE'); export const STATE_FACTORY = new InjectionToken('STATE_FACTORY'); export const SECURE_STORAGE = new InjectionToken('SECURE_STORAGE'); +export const WINDOW_TOKEN = new InjectionToken('WINDOW'); diff --git a/common/src/services/webCryptoFunction.service.ts b/common/src/services/webCryptoFunction.service.ts index aab05b13..56254215 100644 --- a/common/src/services/webCryptoFunction.service.ts +++ b/common/src/services/webCryptoFunction.service.ts @@ -1,8 +1,9 @@ -import { Injectable } from '@angular/core'; +import { Inject, Injectable } from '@angular/core'; import * as forge from "node-forge"; import { CryptoFunctionService } from "../abstractions/cryptoFunction.service"; +import { WINDOW_TOKEN } from '../abstractions/injectionTokens'; import { Utils } from "../misc/utils"; import { DecryptParameters } from "../models/domain/decryptParameters"; import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; @@ -12,7 +13,7 @@ export class WebCryptoFunctionService implements CryptoFunctionService { private crypto: Crypto; private subtle: SubtleCrypto; - constructor(win: Window) { + constructor(@Inject(WINDOW_TOKEN) win: Window) { this.crypto = typeof win.crypto !== "undefined" ? win.crypto : null; this.subtle = !!this.crypto && typeof win.crypto.subtle !== "undefined" ? win.crypto.subtle : null;