[Solved] Firefox storage get undefined
-
I'm trying to make an add-on for Firefox that will store some values which will be used later on in an contextMenus. Getting the value and setting a new one in options_ui works just fine. The problem is when I try to get the value by using the new contextMenu I am adding in background.js. The new contextMenu it is added, the window for saving the file appers, but the value from storage returns undefined. Can anyone help me with this, point me where I'm doing something wrong? I am setting a new value before using the contextMenu. background.js
var gettingValue = browser.storage.sync.get("number");
gettingValue.then(item =>{
browser.contextMenus.create({
id: "save-image",
title: "Save image",
contexts: ["image"],
});browser.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "save-image") { let name = "Initial"; if(item) { name = item.number; } else { name = "Number not found"; } browser.downloads.download({ url : info.srcUrl, filename : name + ".jpg", saveAs : true }); } });
});
options.js
function saveOptions(e) {
e.preventDefault();
browser.storage.sync.set({
number: document.querySelector("#newNumber").value
});
}function restoreOptions() {
let getting = browser.storage.sync.get("number");
getting.then(setCurrentChoice, onError);function setCurrentChoice(result) { document.querySelector("#newNumber").value = result.number || "No number was set"; } function onError(error) { console.log(\`Error: ${error}\`); }
}
document.addEventListener("DOMContentLoaded", restoreOptions);
document.querySelector("form").addEventListener("submit", saveOptions);options.html
Number input: Save
Permissions in manifest
"permissions": \[ "contextMenus", "downloads", "storage" \],
-
I'm trying to make an add-on for Firefox that will store some values which will be used later on in an contextMenus. Getting the value and setting a new one in options_ui works just fine. The problem is when I try to get the value by using the new contextMenu I am adding in background.js. The new contextMenu it is added, the window for saving the file appers, but the value from storage returns undefined. Can anyone help me with this, point me where I'm doing something wrong? I am setting a new value before using the contextMenu. background.js
var gettingValue = browser.storage.sync.get("number");
gettingValue.then(item =>{
browser.contextMenus.create({
id: "save-image",
title: "Save image",
contexts: ["image"],
});browser.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "save-image") { let name = "Initial"; if(item) { name = item.number; } else { name = "Number not found"; } browser.downloads.download({ url : info.srcUrl, filename : name + ".jpg", saveAs : true }); } });
});
options.js
function saveOptions(e) {
e.preventDefault();
browser.storage.sync.set({
number: document.querySelector("#newNumber").value
});
}function restoreOptions() {
let getting = browser.storage.sync.get("number");
getting.then(setCurrentChoice, onError);function setCurrentChoice(result) { document.querySelector("#newNumber").value = result.number || "No number was set"; } function onError(error) { console.log(\`Error: ${error}\`); }
}
document.addEventListener("DOMContentLoaded", restoreOptions);
document.querySelector("form").addEventListener("submit", saveOptions);options.html
Number input: Save
Permissions in manifest
"permissions": \[ "contextMenus", "downloads", "storage" \],
Solution:
browser.contextMenus.create({
id: "save-image",
title: "Save image",
contexts: ["image"],
});browser.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "save-image") {
var gettingValue = browser.storage.sync.get("number");
gettingValue.then(item =>{
let name = "Initial";
if(item) {
name = item.number;
} else {
name = "Number not found";
}
browser.downloads.download({
url : info.srcUrl,
filename : name + ".jpg",
saveAs : true
});
});
}
});