2017-01-14 17:20:44 +01:00
|
|
|
function SettingsService(userService) {
|
|
|
|
this.userService = userService;
|
|
|
|
this.settingsCache = null;
|
|
|
|
|
|
|
|
initSettingsService();
|
2017-07-14 21:34:05 +02:00
|
|
|
}
|
2017-01-14 17:20:44 +01:00
|
|
|
|
|
|
|
function initSettingsService() {
|
|
|
|
SettingsService.prototype.clearCache = function () {
|
2017-07-14 21:34:05 +02:00
|
|
|
this.settingsCache = null;
|
2017-01-14 17:20:44 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
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(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) {
|
2017-01-14 19:43:59 +01:00
|
|
|
var deferred = Q.defer();
|
|
|
|
|
|
|
|
getSettingsKey(this, 'equivalentDomains', function (domains) {
|
|
|
|
deferred.resolve(domains);
|
|
|
|
});
|
|
|
|
|
|
|
|
return deferred.promise;
|
2017-01-14 17:20:44 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
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(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 (callback) {
|
|
|
|
if (!callback || typeof callback !== 'function') {
|
|
|
|
throw 'callback function required';
|
|
|
|
}
|
|
|
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
this.userService.getUserId(function (userId) {
|
|
|
|
chrome.storage.local.remove('settings_' + userId, function () {
|
|
|
|
self.settingsCache = null;
|
|
|
|
callback();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
function handleError(error, deferred) {
|
|
|
|
deferred.reject(error);
|
|
|
|
}
|
2017-07-14 21:34:05 +02:00
|
|
|
}
|