diff --git a/src/background/idle.background.ts b/src/background/idle.background.ts index 3bb63e0fdc..de02b0772f 100644 --- a/src/background/idle.background.ts +++ b/src/background/idle.background.ts @@ -1,9 +1,11 @@ -import LockService from '../services/lock.service'; import MainBackground from './main.background'; import { ConstantsService } from 'jslib/services'; -import { StorageService } from 'jslib/abstractions'; +import { + LockService, + StorageService, +} from 'jslib/abstractions'; export default class IdleBackground { private idle: any; diff --git a/src/background/main.background.ts b/src/background/main.background.ts index 9a9659d6ee..98b7cd3494 100644 --- a/src/background/main.background.ts +++ b/src/background/main.background.ts @@ -10,6 +10,7 @@ import { CryptoService, EnvironmentService, FolderService, + LockService, PasswordGenerationService, SettingsService, TokenService, @@ -26,6 +27,7 @@ import { CryptoService as CryptoServiceAbstraction, EnvironmentService as EnvironmentServiceAbstraction, FolderService as FolderServiceAbstraction, + LockService as LockServiceAbstraction, MessagingService as MessagingServiceAbstraction, PasswordGenerationService as PasswordGenerationServiceAbstraction, PlatformUtilsService as PlatformUtilsServiceAbstraction, @@ -52,7 +54,6 @@ import BrowserMessagingService from '../services/browserMessaging.service'; import BrowserPlatformUtilsService from '../services/browserPlatformUtils.service'; import BrowserStorageService from '../services/browserStorage.service'; import i18nService from '../services/i18n.service'; -import LockService from '../services/lock.service'; import SyncService from '../services/sync.service'; export default class MainBackground { @@ -72,7 +73,7 @@ export default class MainBackground { cipherService: CipherServiceAbstraction; folderService: FolderServiceAbstraction; collectionService: CollectionServiceAbstraction; - lockService: LockService; + lockService: LockServiceAbstraction; syncService: SyncService; passwordGenerationService: PasswordGenerationServiceAbstraction; totpService: TotpServiceAbstraction; diff --git a/src/popup/app/services/background.service.ts b/src/popup/app/services/background.service.ts index 8b330a3034..9c35ee2e63 100644 --- a/src/popup/app/services/background.service.ts +++ b/src/popup/app/services/background.service.ts @@ -7,6 +7,7 @@ import { CollectionService } from 'jslib/abstractions/collection.service'; import { CryptoService } from 'jslib/abstractions/crypto.service'; import { EnvironmentService } from 'jslib/abstractions/environment.service'; import { FolderService } from 'jslib/abstractions/folder.service'; +import { LockService } from 'jslib/abstractions/lock.service'; import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { SettingsService } from 'jslib/abstractions/settings.service'; @@ -39,7 +40,7 @@ export const appIdService = getBackgroundService('appIdService'); export const i18nService = getBackgroundService('i18nService'); export const constantsService = getBackgroundService('constantsService'); export const settingsService = getBackgroundService('settingsService'); -export const lockService = getBackgroundService('lockService'); +export const lockService = getBackgroundService('lockService'); export const totpService = getBackgroundService('totpService'); export const environmentService = getBackgroundService('environmentService'); export const collectionService = getBackgroundService('collectionService'); diff --git a/src/services/lock.service.ts b/src/services/lock.service.ts deleted file mode 100644 index 59fef582f8..0000000000 --- a/src/services/lock.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { - ConstantsService, -} from 'jslib/services'; - -import { - CipherService, - CollectionService, - CryptoService, - FolderService, - PlatformUtilsService, - StorageService, -} from 'jslib/abstractions'; - -export default class LockService { - constructor(private cipherService: CipherService, private folderService: FolderService, - private collectionService: CollectionService, private cryptoService: CryptoService, - private platformUtilsService: PlatformUtilsService, - private storageService: StorageService, - private setIcon: Function, private refreshBadgeAndMenu: Function) { - this.checkLock(); - setInterval(() => this.checkLock(), 10 * 1000); // check every 10 seconds - } - - async checkLock(): Promise { - if (this.platformUtilsService.isViewOpen()) { - // Do not lock - return; - } - - const key = await this.cryptoService.getKey(); - if (key == null) { - // no key so no need to lock - return; - } - - const lockOption = await this.storageService.get(ConstantsService.lockOptionKey); - if (lockOption == null || lockOption < 0) { - return; - } - - const lastActive = await this.storageService.get(ConstantsService.lastActiveKey); - if (lastActive == null) { - return; - } - - const lockOptionSeconds = lockOption * 60; - const diffSeconds = ((new Date()).getTime() - lastActive) / 1000; - if (diffSeconds >= lockOptionSeconds) { - // need to lock now - await this.lock(); - } - } - - async lock(): Promise { - await Promise.all([ - this.cryptoService.clearKey(), - this.cryptoService.clearOrgKeys(true), - this.cryptoService.clearPrivateKey(true), - this.cryptoService.clearEncKey(true), - this.setIcon(), - this.refreshBadgeAndMenu(), - ]); - - this.folderService.clearCache(); - this.cipherService.clearCache(); - this.collectionService.clearCache(); - } -}