notif-visa-ext/js/background.js

79 lines
2.9 KiB
JavaScript

chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(async function(def) {
let response = new Object();
response.action = def.action;
if (def.action == "fetch_info") {
let { __un } = await chrome.storage.local.get("__un");
let { __pw } = await chrome.storage.local.get("__pw");
let { __id } = await chrome.storage.local.get("__id");
let { __ap } = await chrome.storage.local.get("__ap");
let { __il } = await chrome.storage.local.get("__il");
let { __ad } = await chrome.storage.local.get("__ad");
let { __al } = await chrome.storage.local.get("__al");
let { __ar } = await chrome.storage.local.get("__ar");
let $version = await new Promise(r => chrome.management.getSelf(self => r(self.version)));
response.data = {
$username: __un,
$password: __pw,
$appid: __id,
$active: __ap,
$apptCenter: __il,
$apptDate: __ad,
$ascCenter: __al,
$ascReverse: __ar,
$version
}
}
port.postMessage(response);
});
});
chrome.runtime.onInstalled.addListener(async({ reason }) => {
chrome.action.disable();
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
let exampleRule = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostEquals: 'ais.usvisa-info.com' },
})
],
actions: [new chrome.declarativeContent.ShowAction()],
};
let rules = [exampleRule];
chrome.declarativeContent.onPageChanged.addRules(rules);
});
if (reason === 'install') {
await chrome.storage.local.set({ __ab: false, __ap: true, __cr: 0, __fq: 1, __gp: 3 });
chrome.tabs.create({
url: "https://ais.usvisa-info.com/en-us/countries_list/niv"
});
}
});
var myNotificationID = null,
senderId = null,
ensureSendMessage = (tabId, message, callback) => {
chrome.tabs.sendMessage(tabId, { ping: true }, function(response) {
if (response && response.pong) {
chrome.tabs.sendMessage(tabId, message, callback);
}
});
};
chrome.notifications.onButtonClicked.addListener(function(notifId, btnId) {
if (notifId === myNotificationID) {
chrome.tabs.get(senderId, function(tab) {
chrome.tabs.highlight({ 'tabs': tab.index }, function() {});
});
ensureSendMessage(senderId, { bookNow: btnId === 0 });
}
});
chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
chrome.notifications.create(req.options, function(id) {
myNotificationID = id;
senderId = sender.tab.id;
});
sendResponse(true);
});