1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- let browser = browser || chrome;
- function sendMessageToCurrentTab(subject, value) {
- subject = subject || '';
- value = value || null;
- browser.tabs.query({active: true, currentWindow: true}, function(tabs){
- if (tabs !== []) {
- browser.tabs.sendMessage(tabs[0].id, {'subject' : subject, 'value' : value}, function(response) {});
- console.debug('send message to notification');
- }
- });
- }
- /**
- * Retrieve data from local storage
- * @param string key
- */
- function getStorage(key) {
- return new Promise((resolve, reject) => {
- browser.storage.local.get(key, (items) => {
- resolve(items);
- });
- });
- }
- /**
- * Set data into local storage
- * @param string key
- */
- function setStorage(key, value) {
- return new Promise((resolve, reject) => {
- getStorage(key)
- .then((items) => {
- let data = {};
- data[key] = value;
- browser.storage.local.set(data, () => {
- resolve();
- });
- })
- });
- }
- browser.runtime.onMessage.addListener(function(message, sender, sendResponse){
- switch (message.subject) {
- case "updateBlacklist":
- console.debug("Keywords black list must be updated");
- let rawValue = message.value;
- let blacklist = rawValue.split(',').filter(n => n);
- blacklist = blacklist.map(function(keyword){
- return keyword.trim();
- });
- console.debug("Update list");
- setStorage('blacklist', blacklist).then(() => {
- sendMessageToCurrentTab('updateBlacklist', blacklist);
- });
- break;
- case "getBlacklist":
- getStorage('blacklist').then((items) => {
- sendResponse({'subject':'blacklistValues', 'value':items});
- });
- default:
- }
- return true;
- });
- browser.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
- if (changeInfo.status == 'complete') {
- getStorage('blacklist').then((items) => {
- sendMessageToCurrentTab('tabsUpdated', items.blacklist);
- });
- }
- });
|