diff --git a/src/background.html b/src/background.html index ad2926ad51..a9e418fd9f 100644 --- a/src/background.html +++ b/src/background.html @@ -5,7 +5,6 @@ - diff --git a/src/background.js b/src/background.js index 044708bc7e..1a3e45dba0 100644 --- a/src/background.js +++ b/src/background.js @@ -7,6 +7,7 @@ import EnvironmentService from './services/environment.service'; import i18nService from './services/i18nService.js'; import LockService from './services/lockService.js'; import PasswordGenerationService from './services/passwordGeneration.service'; +import SettingsService from './services/settings.service'; import TokenService from './services/token.service'; import TotpService from './services/totp.service'; import UserService from './services/user.service'; @@ -86,7 +87,7 @@ var bg_isBackground = true, window.bg_apiService = bg_apiService = new ApiService(bg_tokenService, logout); window.bg_environmentService = bg_environmentService = new EnvironmentService(bg_apiService); window.bg_userService = bg_userService = new UserService(bg_tokenService); - window.bg_settingsService = bg_settingsService = new SettingsService(bg_userService, bg_utilsService); + window.bg_settingsService = bg_settingsService = new SettingsService(bg_userService); window.bg_cipherService = bg_cipherService = new CipherService(bg_cryptoService, bg_userService, bg_apiService, bg_settingsService, bg_utilsService, bg_constantsService); window.bg_folderService = bg_folderService = new FolderService(bg_cryptoService, bg_userService, bg_apiService, bg_i18nService, bg_utilsService); diff --git a/src/services/settings.service.ts b/src/services/settings.service.ts new file mode 100644 index 0000000000..d429ce4c8b --- /dev/null +++ b/src/services/settings.service.ts @@ -0,0 +1,61 @@ +import UserService from './user.service'; +import UtilsService from './utils.service'; + +const Keys = { + settingsPrefix: 'settings_', + equivalentDomains: 'equivalentDomains', +}; + +export default class SettingsService { + private settingsCache: any; + + constructor(private userService: UserService) { + } + + clearCache(): void { + this.settingsCache = null; + } + + getEquivalentDomains(): Promise { + return this.getSettingsKey(Keys.equivalentDomains); + } + + async setEquivalentDomains(equivalentDomains: any) { + await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains); + } + + async clear(userId: string): Promise { + await UtilsService.removeFromStorage(Keys.settingsPrefix + userId); + this.settingsCache = null; + } + + // Helpers + + private async getSettings(): Promise { + if (this.settingsCache == null) { + const userId = await this.userService.getUserId(); + this.settingsCache = UtilsService.getObjFromStorage(Keys.settingsPrefix + userId); + } + return this.settingsCache; + } + + private async getSettingsKey(key: string): Promise { + const settings = await this.getSettings(); + if (settings != null && settings[key]) { + return settings[key]; + } + return null; + } + + private async setSettingsKey(key: string, value: any): Promise { + const userId = await this.userService.getUserId(); + let settings = await this.getSettings(); + if (!settings) { + settings = {}; + } + + settings[key] = value; + await UtilsService.saveObjToStorage(Keys.settingsPrefix + userId, settings); + this.settingsCache = settings; + } +} diff --git a/src/services/settingsService.js b/src/services/settingsService.js deleted file mode 100644 index 741adb4ab6..0000000000 --- a/src/services/settingsService.js +++ /dev/null @@ -1,99 +0,0 @@ -function SettingsService(userService, utilsService) { - this.userService = userService; - this.utilsService = utilsService; - this.settingsCache = null; - - initSettingsService(); -} - -function initSettingsService() { - SettingsService.prototype.clearCache = function () { - this.settingsCache = null; - }; - - SettingsService.prototype.getSettings = function (callback) { - if (!callback || typeof callback !== 'function') { - throw 'callback function required'; - } - - var self = this; - - if (self.settingsCache) { - callback(self.settingsCache); - return; - } - - this.userService.getUserId().then(function (userId) { - var key = 'settings_' + userId; - chrome.storage.local.get(key, function (obj) { - self.settingsCache = obj[key]; - callback(self.settingsCache); - }); - }); - }; - - SettingsService.prototype.getEquivalentDomains = function (callback) { - var deferred = Q.defer(); - - getSettingsKey(this, 'equivalentDomains', function (domains) { - deferred.resolve(domains); - }); - - return deferred.promise; - }; - - function getSettingsKey(self, key, callback) { - if (!callback || typeof callback !== 'function') { - throw 'callback function required'; - } - - self.getSettings(function (settings) { - if (settings && settings[key]) { - callback(settings[key]); - return; - } - - callback(null); - }); - } - - SettingsService.prototype.setEquivalentDomains = function (equivalentDomains, callback) { - setSettingsKey(this, 'equivalentDomains', equivalentDomains, callback); - }; - - function setSettingsKey(self, key, value, callback) { - if (!callback || typeof callback !== 'function') { - throw 'callback function required'; - } - - self.userService.getUserId().then(function (userId) { - var settingsKey = 'settings_' + userId; - - self.getSettings(function (settings) { - if (!settings) { - settings = {}; - } - settings[key] = value; - - var obj = {}; - obj[settingsKey] = settings; - - chrome.storage.local.set(obj, function () { - self.settingsCache = settings; - callback(); - }); - }); - }); - } - - SettingsService.prototype.clear = function (userId) { - var self = this; - return self.utilsService.removeFromStorage('settings_' + userId).then(function () { - self.settingsCache = null; - }); - }; - - function handleError(error, deferred) { - deferred.reject(error); - } -} diff --git a/src/services/syncService.js b/src/services/syncService.js index 95f33ba31e..4c4172e822 100644 --- a/src/services/syncService.js +++ b/src/services/syncService.js @@ -147,8 +147,6 @@ function initSyncService() { } function syncSettings(self, userId, response) { - var deferred = Q.defer(); - var eqDomains = []; if (response && response.equivalentDomains) { eqDomains = eqDomains.concat(response.equivalentDomains); @@ -161,11 +159,7 @@ function initSyncService() { } } - self.settingsService.setEquivalentDomains(eqDomains, function () { - deferred.resolve(); - }); - - return deferred.promise; + return self.settingsService.setEquivalentDomains(eqDomains); } SyncService.prototype.getLastSync = function (callback) {