1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-23 11:43:51 +00:00

Use InjectionToken for Window

This commit is contained in:
Thomas Rittson
2022-03-25 13:17:56 +10:00
parent 2d15bccc65
commit 0590d603e3
3 changed files with 6 additions and 5 deletions

View File

@@ -15,7 +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 { STATE_FACTORY, STATE_SERVICE_USE_CACHE, WINDOW_TOKEN } 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";
@@ -84,7 +84,7 @@ import { ValidationService } from "./validation.service";
@NgModule({ @NgModule({
declarations: [], declarations: [],
providers: [ providers: [
{ provide: "WINDOW", useValue: window }, { provide: WINDOW_TOKEN, useValue: window },
{ {
provide: LOCALE_ID, provide: LOCALE_ID,
useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale, useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale,
@@ -354,7 +354,6 @@ import { ValidationService } from "./validation.service";
{ {
provide: CryptoFunctionServiceAbstraction, provide: CryptoFunctionServiceAbstraction,
useClass: WebCryptoFunctionService, useClass: WebCryptoFunctionService,
deps: ["WINDOW"],
}, },
{ {
provide: EventServiceAbstraction, provide: EventServiceAbstraction,

View File

@@ -5,3 +5,4 @@ import { StorageService } from './storage.service';
export const STATE_SERVICE_USE_CACHE = new InjectionToken<boolean>('STATE_SERVICE_USE_CACHE'); export const STATE_SERVICE_USE_CACHE = new InjectionToken<boolean>('STATE_SERVICE_USE_CACHE');
export const STATE_FACTORY = new InjectionToken<StateFactory>('STATE_FACTORY'); export const STATE_FACTORY = new InjectionToken<StateFactory>('STATE_FACTORY');
export const SECURE_STORAGE = new InjectionToken<StorageService>('SECURE_STORAGE'); export const SECURE_STORAGE = new InjectionToken<StorageService>('SECURE_STORAGE');
export const WINDOW_TOKEN = new InjectionToken<Window>('WINDOW');

View File

@@ -1,8 +1,9 @@
import { Injectable } from '@angular/core'; import { Inject, Injectable } from '@angular/core';
import * as forge from "node-forge"; import * as forge from "node-forge";
import { CryptoFunctionService } from "../abstractions/cryptoFunction.service"; import { CryptoFunctionService } from "../abstractions/cryptoFunction.service";
import { WINDOW_TOKEN } from '../abstractions/injectionTokens';
import { Utils } from "../misc/utils"; import { Utils } from "../misc/utils";
import { DecryptParameters } from "../models/domain/decryptParameters"; import { DecryptParameters } from "../models/domain/decryptParameters";
import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey";
@@ -12,7 +13,7 @@ export class WebCryptoFunctionService implements CryptoFunctionService {
private crypto: Crypto; private crypto: Crypto;
private subtle: SubtleCrypto; private subtle: SubtleCrypto;
constructor(win: Window) { constructor(@Inject(WINDOW_TOKEN) win: Window) {
this.crypto = typeof win.crypto !== "undefined" ? win.crypto : null; this.crypto = typeof win.crypto !== "undefined" ? win.crypto : null;
this.subtle = this.subtle =
!!this.crypto && typeof win.crypto.subtle !== "undefined" ? win.crypto.subtle : null; !!this.crypto && typeof win.crypto.subtle !== "undefined" ? win.crypto.subtle : null;