mirror of
https://github.com/zero-peak/ZeroOmega.git
synced 2025-01-22 23:08:13 -05:00
9d71c91634
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.
82 lines
2.2 KiB
JavaScript
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),
|
|
};
|