ZeroOmega/omega-target-chromium-extension/omega_target_popup.js
FelisCatus 9d71c91634 Add a mini-popup page with the menu only.
This allows the popup to load faster for most cases. If advanced
features are used, the user will be redirected to the full popup page.
2017-03-15 19:01:06 -07:00

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 (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),
};