Fix clean start, use const

This commit is contained in:
Ximi1970
2020-01-23 23:28:52 +01:00
parent ad2ee02941
commit 541ccee3ed
4 changed files with 120 additions and 61 deletions

View File

@@ -72,14 +72,18 @@ SysTrayX.Messaging = {
//
// Get the unread nessages of the selected accounts
//
let filtersDiv = document.getElementById("filters");
let filtersAttr = filtersDiv.getAttribute("data-filters");
let filters = JSON.parse(filtersAttr);
const filtersDiv = document.getElementById("filters");
const filtersAttr = filtersDiv.getAttribute("data-filters");
const filters = JSON.parse(filtersAttr);
if (filters.length > 0) {
SysTrayX.Messaging.unReadMessages(filters).then(
SysTrayX.Messaging.unreadCb
);
} else {
SysTrayX.Messaging.unReadMessages([{ unread: true }]).then(
SysTrayX.Messaging.unreadCb
);
}
},
@@ -115,7 +119,7 @@ SysTrayX.Messaging = {
sendPreferences: function() {
console.debug("Send preferences");
let getter = browser.storage.sync.get([
const getter = browser.storage.sync.get([
"debug",
"iconType",
"iconMime",
@@ -127,10 +131,10 @@ SysTrayX.Messaging = {
sendPreferencesStorage: function(result) {
console.debug("Get preferences from storage");
let debug = result.debug || "false";
let iconType = result.iconType || "0";
let iconMime = result.iconMime || "image/png";
let icon = result.icon || [];
const debug = result.debug || "false";
const iconType = result.iconType || "0";
const iconMime = result.iconMime || "image/png";
const icon = result.icon || [];
console.log("Debug" + debug);
console.log("Type" + iconType);
@@ -158,16 +162,16 @@ SysTrayX.Messaging = {
getAccounts: function() {
console.debug("Get accounts");
let getter = browser.storage.sync.get(["accounts", "filters"]);
const getter = browser.storage.sync.get(["accounts", "filters"]);
getter.then(this.getAccountsStorage, this.onGetAccountsStorageError);
if (SysTrayX.debugAccounts) {
let accountsDiv = document.getElementById("accounts");
const accountsDiv = document.getElementById("accounts");
let accountsAttr = accountsDiv.getAttribute("data-accounts");
const accountsAttr = accountsDiv.getAttribute("data-accounts");
console.debug("Accounts attr: " + accountsAttr);
let accounts = JSON.parse(accountsAttr);
const accounts = JSON.parse(accountsAttr);
console.debug("Accounts poll: " + accounts.length);
}
},
@@ -179,16 +183,16 @@ SysTrayX.Messaging = {
getAccountsStorage: function(result) {
console.debug("Get accounts from storage");
let accounts = result.accounts || [];
const accounts = result.accounts || [];
// Store them in the background HTML
let accountsDiv = document.getElementById("accounts");
const accountsDiv = document.getElementById("accounts");
accountsDiv.setAttribute("data-accounts", JSON.stringify(accounts));
let filters = result.filters || [];
const filters = result.filters || [];
// Store them in the background HTML
let filtersDiv = document.getElementById("filters");
const filtersDiv = document.getElementById("filters");
filtersDiv.setAttribute("data-filters", JSON.stringify(filters));
},
@@ -225,28 +229,28 @@ SysTrayX.Link = {
// Store the preferences from the app
console.log("Preferences received");
let iconMime = response["preferences"].iconMime;
const iconMime = response["preferences"].iconMime;
if (iconMime) {
browser.storage.sync.set({
iconMime: iconMime
});
}
let icon = response["preferences"].icon;
const icon = response["preferences"].icon;
if (icon) {
browser.storage.sync.set({
icon: icon
});
}
let iconType = response["preferences"].iconType;
const iconType = response["preferences"].iconType;
if (iconType) {
browser.storage.sync.set({
iconType: iconType
});
}
let debug = response["preferences"].debug;
const debug = response["preferences"].debug;
if (debug) {
browser.storage.sync.set({
debug: debug

View File

@@ -1,5 +1,5 @@
function fileSelected() {
let input = document.getElementById("selectedFileIconType");
const input = document.getElementById("selectedFileIconType");
if (input.files.length > 0) {
console.debug("Selected file: " + input.files[0].name);
@@ -7,20 +7,20 @@ function fileSelected() {
}
function storeFile() {
let buffer = new Uint8Array(fr.result);
const buffer = new Uint8Array(fr.result);
let binary = "";
let len = buffer.byteLength;
const len = buffer.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(buffer[i]);
}
let base64 = window.btoa(binary);
let iconDiv = document.getElementById("icon");
const base64 = window.btoa(binary);
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon", base64);
iconDiv.setAttribute("data-icon-mime", input.files[0].type);
let image = document.getElementById("customIconImage");
const image = document.getElementById("customIconImage");
image.setAttribute("src", `data:${input.files[0].type};base64,${base64}` );
console.log(base64);

View File

@@ -55,7 +55,7 @@
</tr>
<tr>
<td><input type="radio" name="iconType" value="2" /> Custom icon</td>
<td><img id="customIconImage" height="25" width="25" align="middle" src=""></td>
<td><img id="customIconImage" height="25" width="25" align="middle" src="icons/blank-icon.png"></td>
<td>
<label for="selectedFileIconType" style="-moz-appearance: button;"}>Browse...</label>
<input type="file" id="selectedFileIconType" accept="image/*" style="display:none;">

View File

@@ -21,13 +21,13 @@ SysTrayX.SaveOptions = {
console.debug("Store accounts and filters");
let treeBase = document.getElementById("accountsTree");
let inputs = treeBase.querySelectorAll("input");
const treeBase = document.getElementById("accountsTree");
const inputs = treeBase.querySelectorAll("input");
let accounts = [];
let filters = [];
for (let i = 0; i < inputs.length; ++i) {
let account = JSON.parse(inputs[i].value);
let checked = inputs[i].checked;
const account = JSON.parse(inputs[i].value);
const checked = inputs[i].checked;
accounts.push({ ...account, checked: checked });
if (checked) {
@@ -72,7 +72,7 @@ SysTrayX.SaveOptions = {
console.debug("Store icon preferences");
let iconType = document.querySelector('input[name="iconType"]:checked')
const iconType = document.querySelector('input[name="iconType"]:checked')
.value;
// Store icon type
@@ -106,8 +106,8 @@ SysTrayX.RestoreOptions = {
//
// Test 1
//
let getting = browser.storage.sync.get("optionsRadioTest");
getting.then(
const getRadioTest = browser.storage.sync.get("optionsRadioTest");
getRadioTest.then(
SysTrayX.RestoreOptions.setCurrentRadioChoice,
SysTrayX.RestoreOptions.onError
);
@@ -115,12 +115,12 @@ SysTrayX.RestoreOptions = {
//
// Test 2
//
getting = browser.storage.sync.get([
const getCheckTest = browser.storage.sync.get([
"optionsCheck1",
"optionsCheck2",
"optionsCheck3"
]);
getting.then(
getCheckTest.then(
SysTrayX.RestoreOptions.setCurrentCheckChoice,
SysTrayX.RestoreOptions.onError
);
@@ -130,7 +130,7 @@ SysTrayX.RestoreOptions = {
//
// Restore debug state
//
let getDebug = browser.storage.sync.get("debug");
const getDebug = browser.storage.sync.get("debug");
getDebug.then(
SysTrayX.RestoreOptions.setDebug,
SysTrayX.RestoreOptions.onDebugError
@@ -139,7 +139,7 @@ SysTrayX.RestoreOptions = {
//
// Restore icon type
//
let getIconType = browser.storage.sync.get("iconType");
const getIconType = browser.storage.sync.get("iconType");
getIconType.then(
SysTrayX.RestoreOptions.setIconType,
SysTrayX.RestoreOptions.onIconTypeError
@@ -148,7 +148,7 @@ SysTrayX.RestoreOptions = {
//
// Restore icon
//
let getIcon = browser.storage.sync.get(["iconMime", "icon"]);
const getIcon = browser.storage.sync.get(["iconMime", "icon"]);
getIcon.then(
SysTrayX.RestoreOptions.setIcon,
SysTrayX.RestoreOptions.onIconError
@@ -161,8 +161,8 @@ SysTrayX.RestoreOptions = {
// Test 1 Callback
//
setCurrentRadioChoice: function(result) {
let selector = result.optionsRadioTest || "Option1";
let radioButton = document.querySelector(`[value=${selector}]`);
const selector = result.optionsRadioTest || "Option1";
const radioButton = document.querySelector(`[value=${selector}]`);
radioButton.checked = true;
},
@@ -170,11 +170,11 @@ SysTrayX.RestoreOptions = {
// Test 2 Callback
//
setCurrentCheckChoice: function(result) {
let checkbox1 = document.querySelector('[name="check1"]');
const checkbox1 = document.querySelector('[name="check1"]');
checkbox1.checked = result.optionsCheck1 || false;
let checkbox2 = document.querySelector('[name="check2"]');
const checkbox2 = document.querySelector('[name="check2"]');
checkbox2.checked = result.optionsCheck2 || false;
let checkbox3 = document.querySelector('[name="check3"]');
const checkbox3 = document.querySelector('[name="check3"]');
checkbox3.checked = result.optionsCheck3 || false;
},
@@ -189,12 +189,12 @@ SysTrayX.RestoreOptions = {
// Restore debug state callbacks
//
setDebug: function(result) {
let debug = result.debug || "false";
const debug = result.debug || "false";
console.debug("Debug: " + debug);
let checkbox = document.querySelector(`input[name="debug"]`);
checkbox.checked = (debug === "true");
const checkbox = document.querySelector(`input[name="debug"]`);
checkbox.checked = debug === "true";
},
onDebugError: function(error) {
@@ -205,8 +205,8 @@ SysTrayX.RestoreOptions = {
// Restore icon type callbacks
//
setIconType: function(result) {
let iconType = result.iconType || "0";
let radioButton = document.querySelector(`[value="${iconType}"]`);
const iconType = result.iconType || "0";
const radioButton = document.querySelector(`[value="${iconType}"]`);
radioButton.checked = true;
},
@@ -218,33 +218,45 @@ SysTrayX.RestoreOptions = {
// Restore icon
//
setIconMime: function(result) {
let iconMime = result.iconMime || "image/png";
const iconMime = result.iconMime || "";
let iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon-mime", iconMime);
const valid = iconMime !== "";
if (valid) {
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon-mime", iconMime);
}
return valid;
},
setIconData: function(result) {
let iconBase64 = result.icon || "";
const iconBase64 = result.icon || "";
let iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon", iconBase64);
const valid = iconBase64 !== "";
if (valid) {
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon", iconBase64);
}
return valid;
},
updateIconImage: function() {
let iconDiv = document.getElementById("icon");
const iconDiv = document.getElementById("icon");
icon_mime = iconDiv.getAttribute("data-icon-mime");
icon_data = iconDiv.getAttribute("data-icon");
let image = document.getElementById("customIconImage");
const image = document.getElementById("customIconImage");
image.setAttribute("src", `data:${icon_mime};base64,${icon_data}`);
},
setIcon: function(result) {
SysTrayX.RestoreOptions.setIconMime(result);
SysTrayX.RestoreOptions.setIconData(result);
const validMime = SysTrayX.RestoreOptions.setIconMime(result);
const validData = SysTrayX.RestoreOptions.setIconData(result);
SysTrayX.RestoreOptions.updateIconImage();
if (validMime && validData) {
SysTrayX.RestoreOptions.updateIconImage();
}
},
onIconError: function(error) {
@@ -255,7 +267,7 @@ SysTrayX.RestoreOptions = {
SysTrayX.StorageChanged = {
changed: function(changes, area) {
// Try to keep the preferences of the add-on and the app in sync
let changedItems = Object.keys(changes);
const changedItems = Object.keys(changes);
let changed_icon = false;
let changed_icon_mime = false;
@@ -294,6 +306,49 @@ SysTrayX.StorageChanged = {
}
};
//
// Set default icon
//
const toDataURL = url =>
fetch(url)
.then(response => response.blob())
.then(
blob =>
new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(blob);
})
);
toDataURL("icons/blank-icon.png").then(dataUrl => {
const data = dataUrl
.split(":")
.pop()
.split(",");
const mime = data[0].split(";")[0];
const base64 = data[1];
const iconDiv = document.getElementById("icon");
if (
iconDiv.getAttribute("data-icon") === "" &&
iconDiv.getAttribute("data-icon-mime") === ""
) {
iconDiv.setAttribute("data-icon", base64);
iconDiv.setAttribute("data-icon-mime", mime);
console.debug("Default set");
}
console.debug("Default: " + mime);
console.debug("Default: " + base64);
});
//
// Main
//
document.addEventListener("DOMContentLoaded", SysTrayX.RestoreOptions.start);
document
.querySelector('[name="saveform"]')