@juraj.masiar storage seems to be working OK
@hans_squared
manifest.json
{
"manifest_version": 2,
"name": "Test Monitor",
"version": "1.0.0",
"description": "Does stuff",
"icons": {
"48": "icons/Test-icon.png"
},
"content_scripts": [
{
"matches": [
"https://*"
],
"js": [
"content-scripts/content-script.js"
],
"run_at": "document_idle"
}
],
"background": {
"scripts": [
"background/background.js",
"utilities/timing-utilities.js"
],
"persistent": true
},
"browser_action": {
"default_icon": "icons/Test-icon.png",
"default_title": "Test Monitor",
"default_popup": "popup/index.html"
},
"permissions": [
"webNavigation",
"storage",
"activeTab",
"tabs"
]
}
background.js
browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
console.log('bg - onUpdated - tabId: ', tabId, ' changeInfo: ', changeInfo, ' tab: ', tab);
if (changeInfo.url) {
browser.tabs.sendMessage(tabId, { action: 'urlChanged', url: tab.url });
console.log('tab update message sent!');
}
});
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
console.log('bg - onMessage - request: ', request);
switch (request.action) {
case 'registerUrlChangeHandler':
browser.tabs.query({ active: true, currentWindow: true }, (tabs) => {
browser.tabs.sendMessage(tabs[0].id, { action: 'urlChanged', url: tabs[0].url });
console.log('bg - registerUrlChangeHandler response sent');
});
break;
case 'itemDatasetInit':
inititemDataset(request);
break;
case 'itemPriceUpdate':
break;
}
});
async function inititemDataset(request)
{
try {
let storeditems = await browser.storage.local.get("items");
console.log('retrieved items from storage: ', storeditems);
let items = request.data.reduce((sum, current) => {
if(sum.hasOwnProperty(current.id))
{
sum[current.id].push([ Date.now(), current.price ]);
}
else
{
sum[current.id] = [[ Date.now(), current.price ]];
}
return sum;
}, storeditems);
// store the objects
await browser.storage.local.set({ storeditems });
} catch (error) {
console.log('error:', error);
}
}