ZeroOmega/omega-target-chromium-extension/omega_target_popup.js

82 lines
2.2 KiB
JavaScript

function callBackgroundNoReply(method, args, cb) {
chrome.runtime.sendMessage({
method: method,
args: args,
noReply: true,
refreshActivePage: true,
});
if (cb) return cb();
}
function callBackground(method, args, cb) {
chrome.runtime.sendMessage({
method: method,
args: args,
}, function(response) {
if (chrome.runtime.lastError != null)
return cb && cb(chrome.runtime.lastError)
if (response.error) return cb && cb(response.error)
return cb && cb(null, response.result)
});
}
var requestInfoCallback = null;
OmegaTargetPopup = {
getState: function (keys, cb) {
var results = {};
keys.forEach(function(key) {
try {
results[key] = JSON.parse(localStorage['omega.local.' + key]);
} catch (_) {
return null;
}
});
if (cb) cb(null, results);
},
applyProfile: function (name, cb) {
callBackgroundNoReply('applyProfile', [name], cb);
},
openOptions: function (hash, cb) {
var options_url = chrome.extension.getURL('options.html');
chrome.tabs.query({
url: options_url
}, function(tabs) {
if (!chrome.runtime.lastError && tabs && tabs.length > 0) {
var props = {
active: true
};
if (hash) {
var url = options_url + hash;
props.url = url;
}
chrome.tabs.update(tabs[0].id, props);
} else {
chrome.tabs.create({
url: options_url
});
}
if (cb) return cb();
});
},
getActivePageInfo: function(cb) {
chrome.tabs.query({active: true, lastFocusedWindow: true}, function (tabs) {
if (tabs.length === 0 || !tabs[0].url) return cb();
var args = {tabId: tabs[0].id, url: tabs[0].url};
callBackground('getPageInfo', [args], cb)
});
},
setDefaultProfile: function(profileName, defaultProfileName, cb) {
callBackgroundNoReply('setDefaultProfile',
[profileName, defaultProfileName], cb);
},
addTempRule: function(domain, profileName, cb) {
callBackgroundNoReply('addTempRule', [domain, profileName], cb);
},
openManage: function(domain, profileName, cb) {
chrome.tabs.create({url: 'chrome://extensions/?id=' + chrome.runtime.id});
},
getMessage: chrome.i18n.getMessage.bind(chrome.i18n),
};