Files
SysTray-X/webext/options.js

1517 lines
38 KiB
JavaScript
Raw Normal View History

2021-09-04 22:16:18 +02:00
//
// Get the prefered storage
//
2023-09-06 22:04:41 +02:00
function storage() {
console.log("Using local storage");
return browser.storage.local;
2021-09-04 22:16:18 +02:00
}
SysTrayX.SaveOptions = {
2021-09-04 22:16:18 +02:00
start: async function (e) {
e.preventDefault();
//
// Save accounts and filters
//
2020-01-23 23:28:52 +01:00
const treeBase = document.getElementById("accountsTree");
2020-05-03 23:39:02 +02:00
const accounts = treeBase.querySelectorAll(
'input[type="checkbox"][name*="account"]'
);
2020-05-03 23:39:02 +02:00
let filters = [];
2023-09-06 22:04:41 +02:00
accounts.forEach((account) => {
if (account.checked || account.indeterminate) {
// Find all selected folders
const folders = Array.from(
account.parentNode.querySelectorAll(
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
)
).filter((folder) => folder.checked);
if (folders.length > 0) {
const mailFolderExt = JSON.parse(folders[0].value);
filters.push({
accountId: mailFolderExt.accountId,
version: mailFolderExt.version,
folders: [],
});
2021-09-04 22:16:18 +02:00
2023-09-06 22:04:41 +02:00
folders.forEach((folder) => {
const mailFolderExt = JSON.parse(folder.value);
filters[filters.length - 1].folders.push(mailFolderExt.path);
});
2021-09-04 22:16:18 +02:00
}
2023-09-06 22:04:41 +02:00
}
});
// Store extended query filters
2021-09-04 22:16:18 +02:00
console.debug("Saving filters: " + JSON.stringify(filters));
await storage().set({
filters: filters,
2020-04-01 23:33:08 +02:00
});
//
// Save debug state
//
const debug = document.querySelector('input[name="debug"]').checked;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-04-04 18:02:35 +02:00
debug: `${debug}`,
});
2020-04-07 17:19:02 +02:00
//
// Save minimize preferences
//
const minimizeType = document.querySelector(
'input[name="minimizeType"]:checked'
).value;
2020-04-07 17:19:02 +02:00
// Store minimize preferences
2021-09-04 22:16:18 +02:00
await storage().set({
2020-04-07 17:19:02 +02:00
minimizeType: minimizeType,
});
//
// Save minimize icon preferences
//
const minimizeIconType = document.querySelector(
'input[name="minimizeIconType"]:checked'
).value;
// Store minimize icon preferences
await storage().set({
minimizeIconType: minimizeIconType,
});
2020-06-28 23:23:12 +02:00
//
// Save close preferences
//
const closeType = document.querySelector(
'input[name="closeType"]:checked'
).value;
2020-06-28 23:23:12 +02:00
// Store close preferences
2021-09-04 22:16:18 +02:00
await storage().set({
2020-06-28 23:23:12 +02:00
closeType: closeType,
});
2020-02-29 19:04:43 +01:00
//
2023-11-14 22:43:51 +01:00
// Save startup preferences
2020-02-29 19:04:43 +01:00
//
2023-11-14 22:43:51 +01:00
const startupType = document.querySelector(
'input[name="startupType"]:checked'
).value;
2021-09-04 22:16:18 +02:00
await storage().set({
2023-11-14 22:43:51 +01:00
startupType: startupType,
2020-02-29 19:04:43 +01:00
});
2020-02-18 00:24:31 +01:00
//
// Save restore window positions state
//
const restorePositions = document.querySelector(
'input[name="restorePositions"]'
).checked;
2021-09-04 22:16:18 +02:00
await storage().set({
restorePositions: `${restorePositions}`,
});
2020-05-22 22:54:10 +02:00
//
// Save default icon preferences
//
const defaultIconType = document.querySelector(
'input[name="defaultIconType"]:checked'
).value;
// Store default icon type
2021-09-04 22:16:18 +02:00
await storage().set({
2020-05-22 22:54:10 +02:00
defaultIconType: defaultIconType,
});
const defaultIconDiv = document.getElementById("defaultIcon");
const defaultIconBase64 = defaultIconDiv.getAttribute("data-default-icon");
const defaultIconMime = defaultIconDiv.getAttribute(
"data-default-icon-mime"
);
// Store default icon (base64)
2021-09-04 22:16:18 +02:00
await storage().set({
2020-05-22 22:54:10 +02:00
defaultIconMime: defaultIconMime,
defaultIcon: defaultIconBase64,
});
2020-06-03 22:46:46 +02:00
//
// Save hide default icon state
//
let hideDefaultIcon = document.querySelector(
'input[name="hideDefaultIcon"]'
).checked;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-06-03 22:46:46 +02:00
hideDefaultIcon: `${hideDefaultIcon}`,
});
//
// Save icon preferences
//
const iconType = document.querySelector(
'input[name="iconType"]:checked'
).value;
// Store icon type
2021-09-04 22:16:18 +02:00
await storage().set({
2020-04-04 18:02:35 +02:00
iconType: iconType,
});
const iconDiv = document.getElementById("icon");
const iconBase64 = iconDiv.getAttribute("data-icon");
const iconMime = iconDiv.getAttribute("data-icon-mime");
// Store icon (base64)
2021-09-04 22:16:18 +02:00
await storage().set({
iconMime: iconMime,
2020-04-04 18:02:35 +02:00
icon: iconBase64,
});
2023-08-29 19:41:21 +02:00
//
2023-10-24 22:42:56 +02:00
// Save invert icon preferences
2023-08-29 19:41:21 +02:00
//
2023-10-24 22:42:56 +02:00
const invertIcon = document.querySelector('input[name="invertIcon"]').checked;
2023-08-29 19:41:21 +02:00
2023-10-24 22:42:56 +02:00
// Store invert icon preferences
2023-08-29 19:41:21 +02:00
await storage().set({
2023-10-24 22:42:56 +02:00
invertIcon: `${invertIcon}`,
2023-08-29 19:41:21 +02:00
});
2020-04-05 14:39:19 +02:00
//
2023-08-27 21:01:48 +02:00
// Save show number state
2020-04-05 14:39:19 +02:00
//
const showNumber = document.querySelector(
'input[name="showNumber"]'
).checked;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-04-05 14:39:19 +02:00
showNumber: `${showNumber}`,
});
2023-08-27 21:01:48 +02:00
//
// Save show new indicator state
//
const showNewIndicator = document.querySelector(
'input[name="showNewIndicator"]'
).checked;
await storage().set({
showNewIndicator: `${showNewIndicator}`,
});
2020-12-06 00:36:31 +01:00
//
2023-08-29 19:41:21 +02:00
// Save count type preferences
2020-12-06 00:36:31 +01:00
//
2023-08-29 19:41:21 +02:00
const countType = document.querySelector(
'input[name="countType"]:checked'
).value;
await storage().set({
countType: countType,
});
2020-12-06 00:36:31 +01:00
2023-08-29 19:41:21 +02:00
//
// Save startup delay
//
const startupDelay = document.querySelector(
'input[name="startupDelay"]'
).value;
2021-09-04 22:16:18 +02:00
await storage().set({
2023-08-29 19:41:21 +02:00
startupDelay: startupDelay,
2020-12-06 00:36:31 +01:00
});
2023-11-13 20:14:30 +01:00
//
// Save API count method state
//
const apiCountMethod = document.querySelector('input[name="apiCountMethod"]').checked;
await storage().set({
apiCountMethod: `${apiCountMethod}`,
});
2020-04-05 14:39:19 +02:00
//
// Save number color
//
2020-12-11 20:57:30 +01:00
let numberColor = document.querySelector('input[name="numberColor"]').value;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-04-05 14:39:19 +02:00
numberColor: `${numberColor}`,
});
2020-05-26 22:39:25 +02:00
//
// Save number size
//
const numberSize = document.querySelector('input[name="numberSize"]').value;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-05-26 22:39:25 +02:00
numberSize: numberSize,
});
2020-12-11 20:57:30 +01:00
//
// Save number alignment
//
const numberAlignment = document.querySelector(
'select[name="numberAlignment"]'
).value;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-12-11 20:57:30 +01:00
numberAlignment: numberAlignment,
});
//
// Save number margins
//
const numberMarginLeft = document.querySelector(
'input[name="numberMarginLeft"]'
).value;
const numberMarginTop = document.querySelector(
'input[name="numberMarginTop"]'
).value;
const numberMarginRight = document.querySelector(
'input[name="numberMarginRight"]'
).value;
const numberMarginBottom = document.querySelector(
'input[name="numberMarginBottom"]'
).value;
2021-09-04 22:16:18 +02:00
await storage().set({
2020-12-11 20:57:30 +01:00
numberMargins: {
left: numberMarginLeft,
top: numberMarginTop,
right: numberMarginRight,
bottom: numberMarginBottom,
},
});
//
2023-08-29 19:41:21 +02:00
// Save new indicator type
//
2023-08-29 19:41:21 +02:00
const newIndicatorType = document.querySelector(
'input[name="newIndicatorType"]:checked'
).value;
2023-08-29 19:41:21 +02:00
// Store neew indicator type
2021-09-04 22:16:18 +02:00
await storage().set({
2023-08-29 19:41:21 +02:00
newIndicatorType: newIndicatorType,
});
2020-05-22 22:54:10 +02:00
2021-09-05 17:04:13 +02:00
//
2023-08-29 19:41:21 +02:00
// Save new shade color
2021-09-05 17:04:13 +02:00
//
2023-08-29 19:41:21 +02:00
let newShadeColor = document.querySelector('input[name="newShadeColor"]').value;
2021-09-05 17:04:13 +02:00
await storage().set({
2023-08-29 19:41:21 +02:00
newShadeColor: `${newShadeColor}`,
2021-09-05 17:04:13 +02:00
});
//
// Save launch parameters
//
2023-08-25 18:18:20 +02:00
const startAppInput = document.getElementById("startAppInput");
const startApp = startAppInput.value;
const startAppArgsInput = document.getElementById("startAppArgsInput");
const startAppArgs = startAppArgsInput.value;
const closeAppInput = document.getElementById("closeAppInput");
const closeApp = closeAppInput.value;
const closeAppArgsInput = document.getElementById("closeAppArgsInput");
const closeAppArgs = closeAppArgsInput.value;
// Store launch parameters
await storage().set({
2023-08-25 18:18:20 +02:00
startApp: startApp,
startAppArgs: startAppArgs,
closeApp: closeApp,
closeAppArgs: closeAppArgs,
});
2023-12-04 23:12:03 +01:00
//
// Save shortcuts
//
const showHideShortcutInput = document.getElementById("showHideShortcutInput");
const showHideShortcut = showHideShortcutInput.value;
// Store show / hide shortcut
await storage().set({
showHideShortcut: showHideShortcut,
});
2020-05-22 22:54:10 +02:00
// Mark add-on preferences changed
2021-09-04 22:16:18 +02:00
await storage().set({
2020-05-22 22:54:10 +02:00
addonprefchanged: true,
});
2021-09-04 22:16:18 +02:00
2021-09-05 14:10:04 +02:00
// const inUse = await browser.storage.sync.getBytesInUse();
// console.log("Storage in use: " + inUse);
2020-04-04 18:02:35 +02:00
},
};
2020-01-11 17:17:01 +01:00
SysTrayX.RestoreOptions = {
2021-09-04 22:16:18 +02:00
start: async function () {
//
// Restore debug state
//
2021-09-04 22:16:18 +02:00
await storage()
.get("debug")
.then(
SysTrayX.RestoreOptions.setDebug,
SysTrayX.RestoreOptions.onDebugError
);
2023-08-29 19:41:21 +02:00
//
// Restore filters
//
await storage()
.get("filters")
.then(
SysTrayX.RestoreOptions.setFilters,
SysTrayX.RestoreOptions.onFiltersError
);
2020-04-07 17:19:02 +02:00
//
// Restore minimize type
//
2021-09-04 22:16:18 +02:00
await storage()
.get("minimizeType")
.then(
SysTrayX.RestoreOptions.setMinimizeType,
SysTrayX.RestoreOptions.onMinimizeTypeError
);
2020-04-07 17:19:02 +02:00
//
// Restore minimize icon type
//
await storage()
.get("minimizeIconType")
.then(
SysTrayX.RestoreOptions.setMinimizeIconType,
SysTrayX.RestoreOptions.onMinimizeIconTypeError
);
2020-06-28 23:23:12 +02:00
//
// Restore close type
//
2021-09-04 22:16:18 +02:00
await storage()
.get("closeType")
.then(
SysTrayX.RestoreOptions.setCloseType,
SysTrayX.RestoreOptions.onCloseTypeError
);
2020-06-28 23:23:12 +02:00
2020-02-29 19:04:43 +01:00
//
2023-11-14 22:43:51 +01:00
// Restore startup type
2020-02-29 19:04:43 +01:00
//
2021-09-04 22:16:18 +02:00
await storage()
2023-11-14 22:43:51 +01:00
.get("startupType")
2021-09-04 22:16:18 +02:00
.then(
2023-11-14 22:43:51 +01:00
SysTrayX.RestoreOptions.setStartupType,
SysTrayX.RestoreOptions.onStartupTypeError
2021-09-04 22:16:18 +02:00
);
2020-02-18 00:24:31 +01:00
//
// Restore restore position state
//
2021-09-04 22:16:18 +02:00
await storage()
.get("restorePositions")
.then(
SysTrayX.RestoreOptions.setRestorePositions,
SysTrayX.RestoreOptions.onRestorePositionsError
);
2020-05-22 22:54:10 +02:00
//
// Restore default icon type
//
2021-09-04 22:16:18 +02:00
await storage()
.get("defaultIconType")
.then(
SysTrayX.RestoreOptions.setDefaultIconType,
SysTrayX.RestoreOptions.onDefaultIconTypeError
);
2020-05-22 22:54:10 +02:00
//
// Restore default icon
//
2021-09-04 22:16:18 +02:00
await storage()
.get(["defaultIconMime", "defaultIcon"])
.then(
SysTrayX.RestoreOptions.setDefaultIcon,
SysTrayX.RestoreOptions.onDefaultIconError
);
2020-05-22 22:54:10 +02:00
2020-06-03 22:46:46 +02:00
//
// Restore hide default icon
//
2021-09-04 22:16:18 +02:00
await storage()
.get(["kdeIntegration", "hideDefaultIcon"])
.then(
SysTrayX.RestoreOptions.setHideDefaultIcon,
SysTrayX.RestoreOptions.onHideDefaultIconError
);
2020-06-03 22:46:46 +02:00
//
// Restore icon type
//
2021-09-04 22:16:18 +02:00
await storage()
.get("iconType")
.then(
SysTrayX.RestoreOptions.setIconType,
SysTrayX.RestoreOptions.onIconTypeError
);
//
// Restore icon
//
2021-09-04 22:16:18 +02:00
await storage()
.get(["iconMime", "icon"])
.then(
SysTrayX.RestoreOptions.setIcon,
SysTrayX.RestoreOptions.onIconError
);
2020-04-01 23:33:08 +02:00
2020-05-03 23:39:02 +02:00
//
2023-10-24 22:42:56 +02:00
// Restore invert icon
2020-05-03 23:39:02 +02:00
//
2021-09-04 22:16:18 +02:00
await storage()
2023-10-24 22:42:56 +02:00
.get("invertIcon")
2021-09-04 22:16:18 +02:00
.then(
2023-10-24 22:42:56 +02:00
SysTrayX.RestoreOptions.setInvertIcon,
SysTrayX.RestoreOptions.onInvertIconError
2021-09-04 22:16:18 +02:00
);
2020-05-03 23:39:02 +02:00
2020-04-05 14:39:19 +02:00
//
2023-08-27 21:01:48 +02:00
// Restore show number state
2020-04-05 14:39:19 +02:00
//
2021-09-04 22:16:18 +02:00
await storage()
.get("showNumber")
.then(
SysTrayX.RestoreOptions.setShowNumber,
SysTrayX.RestoreOptions.onShowNumberError
);
2020-04-05 14:39:19 +02:00
2023-08-27 21:01:48 +02:00
//
// Restore show new indicator state
//
await storage()
.get("showNewIndicator")
.then(
SysTrayX.RestoreOptions.setShowNewIndicator,
SysTrayX.RestoreOptions.onShowNewIndicatorError
);
2023-08-29 19:41:21 +02:00
//
// Restore count type
//
await storage()
.get("countType")
.then(
SysTrayX.RestoreOptions.setCountType,
SysTrayX.RestoreOptions.onCountTypeError
);
//
// Restore startup delay
//
await storage()
.get("startupDelay")
.then(
SysTrayX.RestoreOptions.setStartupDelay,
SysTrayX.RestoreOptions.ontartupDelayError
);
2023-11-13 20:14:30 +01:00
//
// Restore API count method state
//
await storage()
.get("apiCountMethod")
.then(
SysTrayX.RestoreOptions.setApiCountMethod,
SysTrayX.RestoreOptions.onApiCountMethodError
);
2020-04-05 14:39:19 +02:00
//
// Restore number color
//
2021-09-04 22:16:18 +02:00
await storage()
.get("numberColor")
.then(
SysTrayX.RestoreOptions.setNumberColor,
SysTrayX.RestoreOptions.onNumberColorError
);
2020-05-26 22:39:25 +02:00
//
// Restore number size
//
2021-09-04 22:16:18 +02:00
await storage()
.get("numberSize")
.then(
SysTrayX.RestoreOptions.setNumberSize,
SysTrayX.RestoreOptions.onNumberSizeError
);
2020-05-26 22:39:25 +02:00
2020-12-11 20:57:30 +01:00
//
// Restore number alignment
//
2021-09-04 22:16:18 +02:00
await storage()
.get("numberAlignment")
.then(
SysTrayX.RestoreOptions.setNumberAlignment,
SysTrayX.RestoreOptions.onNumberAlignmentError
);
2020-12-11 20:57:30 +01:00
//
// Restore number margins
//
2021-09-04 22:16:18 +02:00
await storage()
.get("numberMargins")
.then(
SysTrayX.RestoreOptions.setNumberMargins,
SysTrayX.RestoreOptions.onNumberMarginsError
);
2020-12-11 20:57:30 +01:00
//
2023-08-29 19:41:21 +02:00
// Restore new indicator type
//
2021-09-04 22:16:18 +02:00
await storage()
2023-08-29 19:41:21 +02:00
.get("newIndicatorType")
2021-09-04 22:16:18 +02:00
.then(
2023-08-29 19:41:21 +02:00
SysTrayX.RestoreOptions.setNewIndicatorType,
SysTrayX.RestoreOptions.onNewIndicatorTypeError
2021-09-04 22:16:18 +02:00
);
2020-12-06 00:36:31 +01:00
2021-09-05 17:04:13 +02:00
//
2023-08-29 19:41:21 +02:00
// Restore new shade color
2021-09-05 17:04:13 +02:00
//
await storage()
2023-08-29 19:41:21 +02:00
.get("newShadeColor")
2021-09-04 22:16:18 +02:00
.then(
2023-08-29 19:41:21 +02:00
SysTrayX.RestoreOptions.setNewShadeColor,
SysTrayX.RestoreOptions.onNewShadeColorError
2021-09-04 22:16:18 +02:00
);
//
// Restore launch parameters
//
await storage()
2023-08-25 18:18:20 +02:00
.get("startApp")
.then(
2023-08-25 18:18:20 +02:00
SysTrayX.RestoreOptions.setStartApp,
SysTrayX.RestoreOptions.onStartAppError
);
2023-12-04 23:12:03 +01:00
await storage()
.get("startAppArgs")
.then(
SysTrayX.RestoreOptions.setStartAppArgs,
SysTrayX.RestoreOptions.onStartAppArgsError
);
2023-12-04 23:12:03 +01:00
await storage()
.get("closeApp")
.then(
SysTrayX.RestoreOptions.setCloseApp,
SysTrayX.RestoreOptions.onCloseAppError
);
await storage()
.get("closeAppArgs")
.then(
SysTrayX.RestoreOptions.setCloseAppArgs,
SysTrayX.RestoreOptions.onCloseAppArgsError
);
2023-12-04 23:12:03 +01:00
//
// Restore show / hide shortcut
//
await storage()
.get("showHideShortcut")
.then(
2023-12-04 23:12:03 +01:00
SysTrayX.RestoreOptions.setShowHideShortcut,
SysTrayX.RestoreOptions.onShowHideShortcutError
);
2021-09-04 22:16:18 +02:00
},
//
// Restore debug state callbacks
//
2020-04-04 18:02:35 +02:00
setDebug: function (result) {
2020-01-23 23:28:52 +01:00
const debug = result.debug || "false";
2020-01-23 23:28:52 +01:00
const checkbox = document.querySelector(`input[name="debug"]`);
checkbox.checked = debug === "true";
},
2020-04-04 18:02:35 +02:00
onDebugError: function (error) {
console.log(`Debug Error: ${error}`);
},
2020-04-07 17:19:02 +02:00
//
// Restore minimize type callbacks
//
setMinimizeType: function (result) {
2021-01-03 22:01:20 +01:00
const minimizeType = result.minimizeType || "1";
2020-04-11 23:31:22 +02:00
// Tweak option for platform
2021-09-04 22:16:18 +02:00
// if (SysTrayX.Info.platformInfo.os === "win") {
2020-11-09 11:21:02 +01:00
// document.getElementById("minimizemethod1label").innerHTML =
// "Minimize to tray";
// document
// .getElementById("minimizemethod2")
// .setAttribute("style", "display:none;");
2020-08-02 16:59:53 +02:00
if (minimizeType === "2") {
minimizeType = "1";
2020-04-11 23:31:22 +02:00
}
2020-08-02 16:59:53 +02:00
// }
2020-04-11 23:31:22 +02:00
const radioButton = document.querySelector(
`input[name="minimizeType"][value="${minimizeType}"]`
);
2020-04-07 17:19:02 +02:00
radioButton.checked = true;
},
onMinimizeTypeError: function (error) {
console.log(`Minimize type Error: ${error}`);
},
//
// Restore minimize type callbacks
//
setMinimizeIconType: function (result) {
const minimizeIconType = result.minimizeIconType || "1";
const radioButton = document.querySelector(
`input[name="minimizeIconType"][value="${minimizeIconType}"]`
);
radioButton.checked = true;
},
onMinimizeIconTypeError: function (error) {
console.log(`Minimize icon type Error: ${error}`);
},
2020-06-28 23:23:12 +02:00
//
// Restore close type callbacks
//
setCloseType: function (result) {
2020-08-02 16:59:53 +02:00
const closeType = result.closeType || "1";
2020-06-28 23:23:12 +02:00
const radioButton = document.querySelector(
`input[name="closeType"][value="${closeType}"]`
);
radioButton.checked = true;
},
onCloseTypeError: function (error) {
console.log(`Close type Error: ${error}`);
},
2020-02-29 19:04:43 +01:00
//
// Restore start minimized callbacks
2020-02-29 19:04:43 +01:00
//
2023-11-14 22:43:51 +01:00
setStartupType: function (result) {
2023-11-15 13:03:21 +01:00
const startupType = result.startupType || "0";
2020-02-29 19:04:43 +01:00
2023-11-14 22:43:51 +01:00
const radioButton = document.querySelector(
`input[name="startupType"][value="${startupType}"]`
);
radioButton.checked = true;
2020-02-29 19:04:43 +01:00
},
2023-11-14 22:43:51 +01:00
onStartupTypeError: function (error) {
console.log(`startupType Error: ${error}`);
2020-02-18 00:24:31 +01:00
},
//
// Restore restore position state callbacks
//
setRestorePositions: function (result) {
const restorePositions = result.restorePositions || "false";
// Tweak option for platform
2021-09-04 22:16:18 +02:00
if (SysTrayX.Info.platformInfo.os === "win") {
document
.getElementById("restorePos")
.setAttribute("style", "display:none;");
document
.getElementById("restorePositionsLabel")
.setAttribute("style", "display:none;");
}
const checkbox = document.querySelector(`input[name="restorePositions"]`);
checkbox.checked = restorePositions === "true";
},
onRestorePositionsError: function (error) {
console.log(`RestorePositions Error: ${error}`);
},
//
// Restore icon type callbacks
//
2020-04-04 18:02:35 +02:00
setIconType: function (result) {
2020-01-23 23:28:52 +01:00
const iconType = result.iconType || "0";
const radioButton = document.querySelector(
`input[name="iconType"][value="${iconType}"]`
);
radioButton.checked = true;
},
2020-04-04 18:02:35 +02:00
onIconTypeError: function (error) {
console.log(`Icon type Error: ${error}`);
},
2020-05-22 22:54:10 +02:00
//
// Restore default icon type callbacks
//
setDefaultIconType: function (result) {
const defaultIconType = result.defaultIconType || "0";
const radioButton = document.querySelector(
`input[name="defaultIconType"][value="${defaultIconType}"]`
);
radioButton.checked = true;
},
onDefaultIconTypeError: function (error) {
console.log(`Default icon type Error: ${error}`);
},
//
// Restore default icon
//
setDefaultIconMime: function (result) {
const defaultIconMime = result.defaultIconMime || "";
const valid = defaultIconMime !== "";
if (valid) {
const defaultIconDiv = document.getElementById("defaultIcon");
defaultIconDiv.setAttribute("data-default-icon-mime", defaultIconMime);
}
return valid;
},
setDefaultIconData: function (result) {
const defaultIconBase64 = result.defaultIcon || "";
const valid = defaultIconBase64 !== "";
if (valid) {
const defaultIconDiv = document.getElementById("defaultIcon");
defaultIconDiv.setAttribute("data-default-icon", defaultIconBase64);
}
return valid;
},
updateDefaultIconImage: function () {
const defaultIconDiv = document.getElementById("defaultIcon");
default_icon_mime = defaultIconDiv.getAttribute("data-default-icon-mime");
default_icon_data = defaultIconDiv.getAttribute("data-default-icon");
const image = document.getElementById("defaultCustomIconImage");
image.setAttribute(
"src",
`data:${default_icon_mime};base64,${default_icon_data}`
);
},
setDefaultIcon: function (result) {
const validMime = SysTrayX.RestoreOptions.setDefaultIconMime(result);
const validData = SysTrayX.RestoreOptions.setDefaultIconData(result);
if (validMime && validData) {
SysTrayX.RestoreOptions.updateDefaultIconImage();
}
},
onDefaultIconError: function (error) {
console.log(`Default icon Error: ${error}`);
},
2020-06-03 22:46:46 +02:00
//
// Restore hide default icon callbacks
//
setHideDefaultIcon: function (result) {
2020-06-07 16:19:39 +02:00
const kdeIntegration = result.kdeIntegration || "true";
2020-06-04 17:58:27 +02:00
const hideDefaultIcon = result.hideDefaultIcon || "false";
2020-06-03 22:46:46 +02:00
const checkbox = document.querySelector(`input[name="hideDefaultIcon"]`);
2020-06-07 16:19:39 +02:00
if (kdeIntegration === "false") {
checkbox.parentNode.setAttribute("style", "display: none;");
}
2020-06-03 22:46:46 +02:00
checkbox.checked = hideDefaultIcon === "true";
},
onHideDefaultIconError: function (error) {
console.log(`hideDefaultIcon Error: ${error}`);
},
//
// Restore icon
//
2020-04-04 18:02:35 +02:00
setIconMime: function (result) {
2020-01-23 23:28:52 +01:00
const iconMime = result.iconMime || "";
2020-01-23 23:28:52 +01:00
const valid = iconMime !== "";
if (valid) {
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon-mime", iconMime);
}
return valid;
},
2020-04-04 18:02:35 +02:00
setIconData: function (result) {
2020-01-23 23:28:52 +01:00
const iconBase64 = result.icon || "";
2020-01-23 23:28:52 +01:00
const valid = iconBase64 !== "";
if (valid) {
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon", iconBase64);
}
return valid;
},
2020-04-04 18:02:35 +02:00
updateIconImage: function () {
2020-01-23 23:28:52 +01:00
const iconDiv = document.getElementById("icon");
icon_mime = iconDiv.getAttribute("data-icon-mime");
icon_data = iconDiv.getAttribute("data-icon");
2020-01-23 23:28:52 +01:00
const image = document.getElementById("customIconImage");
image.setAttribute("src", `data:${icon_mime};base64,${icon_data}`);
},
2020-04-04 18:02:35 +02:00
setIcon: function (result) {
2020-01-23 23:28:52 +01:00
const validMime = SysTrayX.RestoreOptions.setIconMime(result);
const validData = SysTrayX.RestoreOptions.setIconData(result);
2020-01-23 23:28:52 +01:00
if (validMime && validData) {
SysTrayX.RestoreOptions.updateIconImage();
}
},
2020-04-04 18:02:35 +02:00
onIconError: function (error) {
console.log(`Icon Error: ${error}`);
2020-04-01 23:33:08 +02:00
},
2023-08-29 19:41:21 +02:00
//
2023-10-24 22:42:56 +02:00
// Restore invert icon callbacks
2023-08-29 19:41:21 +02:00
//
2023-10-24 22:42:56 +02:00
setInvertIcon: function (result) {
const invertIcon = result.invertIcon || "false";
2023-08-29 19:41:21 +02:00
2023-10-24 22:42:56 +02:00
const checkbox = document.querySelector(`input[name="invertIcon"]`);
checkbox.checked = invertIcon === "true";
2023-08-29 19:41:21 +02:00
},
2023-10-24 22:42:56 +02:00
onInvertIconError: function (error) {
console.log(`invertIcon Error: ${error}`);
2023-08-29 19:41:21 +02:00
},
2020-04-05 14:39:19 +02:00
//
2023-08-27 21:01:48 +02:00
// Restore show number state
2020-04-05 14:39:19 +02:00
//
setShowNumber: function (result) {
const showNumber = result.showNumber || "true";
const checkbox = document.querySelector(`input[name="showNumber"]`);
checkbox.checked = showNumber === "true";
},
onShowNumberError: function (error) {
console.log(`showNumber Error: ${error}`);
},
2023-08-27 21:01:48 +02:00
//
// Restore show new indicator state
//
setShowNewIndicator: function (result) {
2023-08-29 21:13:42 +02:00
const showNewIndicator = result.showNewIndicator || "false";
2023-08-27 21:01:48 +02:00
const checkbox = document.querySelector(`input[name="showNewIndicator"]`);
checkbox.checked = showNewIndicator === "true";
},
onShowNewIndicatorError: function (error) {
console.log(`showNewIndicator Error: ${error}`);
},
2023-08-29 19:41:21 +02:00
//
// Restore count type
//
setCountType: function (result) {
const countType = result.countType || "0";
const radioButton = document.querySelector(
`input[name="countType"][value="${countType}"]`
);
radioButton.checked = true;
},
onCountTypeError: function (error) {
console.log(`countType Error: ${error}`);
},
//
// Restore startup delay
//
setStartupDelay: function (result) {
const startupDelay = result.startupDelay || "5";
const input = document.querySelector(`input[name="startupDelay"]`);
input.value = startupDelay;
},
onStartupDelayError: function (error) {
console.log(`StartupDelay Error: ${error}`);
},
2023-11-13 20:14:30 +01:00
//
// Restore API count method state callbacks
//
setApiCountMethod: function (result) {
const apiCountMethod = result.apiCountMethod || "false";
const checkbox = document.querySelector(`input[name="apiCountMethod"]`);
checkbox.checked = apiCountMethod === "true";
},
onApiCountMethodError: function (error) {
console.log(`ApiCountMethod Error: ${error}`);
},
2020-04-05 14:39:19 +02:00
//
// Restore number color
//
setNumberColor: function (result) {
const numberColor = result.numberColor || "#000000";
const input = document.querySelector(`input[name="numberColor"]`);
input.value = numberColor;
},
onNumberColorError: function (error) {
console.log(`numberColor Error: ${error}`);
},
2020-05-26 22:39:25 +02:00
//
// Restore number size
//
setNumberSize: function (result) {
2020-06-13 21:31:28 +02:00
const numberSize = result.numberSize || "10";
2020-05-26 22:39:25 +02:00
const input = document.querySelector(`input[name="numberSize"]`);
input.value = numberSize;
},
onNumberSizeError: function (error) {
console.log(`numberSize Error: ${error}`);
},
2020-12-11 20:57:30 +01:00
//
// Restore number alignment
//
setNumberAlignment: function (result) {
const numberAlignment = result.numberAlignment || "4";
const input = document.querySelector(`select[name="numberAlignment"]`);
input.value = numberAlignment;
},
onNumberAlignmentError: function (error) {
console.log(`numberAlignment Error: ${error}`);
},
//
// Restore number margins
//
setNumberMargins: function (result) {
const numberMargins = result.numberMargins || {
left: 0,
top: 0,
right: 0,
bottom: 0,
};
const inputLeft = document.querySelector(`input[name="numberMarginLeft"]`);
inputLeft.value = numberMargins.left;
const inputTop = document.querySelector(`input[name="numberMarginTop"]`);
inputTop.value = numberMargins.top;
2020-12-11 21:13:24 +01:00
const inputRight = document.querySelector(
`input[name="numberMarginRight"]`
);
2020-12-11 20:57:30 +01:00
inputRight.value = numberMargins.right;
2020-12-11 21:13:24 +01:00
const inputBottom = document.querySelector(
`input[name="numberMarginBottom"]`
);
2020-12-11 20:57:30 +01:00
inputBottom.value = numberMargins.bottom;
},
onNumberMarginsError: function (error) {
console.log(`numberMargins Error: ${error}`);
},
//
2023-08-29 19:41:21 +02:00
// Restore new indicator type
//
2023-08-29 19:41:21 +02:00
setNewIndicatorType: function (result) {
const newIndicatorType = result.newIndicatorType || "2";
const radioButton = document.querySelector(
2023-08-29 19:41:21 +02:00
`input[name="newIndicatorType"][value="${newIndicatorType}"]`
);
radioButton.checked = true;
},
2023-08-29 19:41:21 +02:00
onNewIndicatorTypeError: function (error) {
console.log(`newIndicatorType Error: ${error}`);
2021-09-05 17:04:13 +02:00
},
2020-12-06 00:36:31 +01:00
//
2023-08-29 19:41:21 +02:00
// Restore number color
2020-12-06 00:36:31 +01:00
//
2023-08-29 19:41:21 +02:00
setNewShadeColor: function (result) {
const newShadeColor = result.newShadeColor || "#ff8000";
2020-12-06 00:36:31 +01:00
2023-08-29 19:41:21 +02:00
const input = document.querySelector(`input[name="newShadeColor"]`);
input.value = newShadeColor;
2020-12-06 00:36:31 +01:00
},
2023-08-29 19:41:21 +02:00
onNewShadeColorError: function (error) {
console.log(`newShadeColor Error: ${error}`);
2020-12-06 00:36:31 +01:00
},
//
2023-08-25 20:44:32 +02:00
// Restore start app callbacks
//
2023-08-25 18:18:20 +02:00
setStartApp: function (result) {
const startApp = result.startApp || "";
2023-08-25 18:18:20 +02:00
const startAppInput = document.getElementById("startAppInput");
startAppInput.value = startApp;
},
2023-08-25 18:18:20 +02:00
onStartAppError: function (error) {
console.log(`StartApp Error: ${error}`);
},
//
2023-08-25 20:44:32 +02:00
// Restore start app args callbacks
//
2023-08-25 18:18:20 +02:00
setStartAppArgs: function (result) {
const startAppArgs = result.startAppArgs || "";
2023-08-25 18:18:20 +02:00
const startAppArgsInput = document.getElementById("startAppArgsInput");
startAppArgsInput.value = startAppArgs;
},
2023-08-25 18:18:20 +02:00
onStartAppArgsError: function (error) {
console.log(`StartAppArgs Error: ${error}`);
},
//
// Restore close app callbacks
//
setCloseApp: function (result) {
const closeApp = result.closeApp || "";
const closeAppInput = document.getElementById("closeAppInput");
closeAppInput.value = closeApp;
},
onCloseAppError: function (error) {
console.log(`CloseApp Error: ${error}`);
},
//
// Restore close app args callbacks
//
setCloseAppArgs: function (result) {
const closeAppArgs = result.closeAppArgs || "";
const closeAppArgsInput = document.getElementById("closeAppArgsInput");
closeAppArgsInput.value = closeAppArgs;
},
onCloseAppArgsError: function (error) {
console.log(`CloseAppArgs Error: ${error}`);
},
2023-12-04 23:12:03 +01:00
//
// Restore show / hide shortcut
//
setShowHideShortcut: function (result) {
const showHideShortcut = result.showHideShortcut || "";
const showHideShortcutInput = document.getElementById("showHideShortcutInput");
showHideShortcutInput.value = showHideShortcut;
},
onShowHideShortcutError: function (error) {
console.log(`ShowHideShortcut Error: ${error}`);
},
2020-05-03 23:39:02 +02:00
//
// Restore filters callbacks
//
setFilters: function (result) {
let filters = result.filters || undefined;
2021-09-04 22:16:18 +02:00
const accounts = document
.getElementById("accountsTree")
.querySelectorAll('input[type="checkbox"][name*="account"]');
2020-05-03 23:39:02 +02:00
// No filters stored?
2021-09-04 22:16:18 +02:00
if (filters === undefined || filters.length === 0) {
2020-05-03 23:39:02 +02:00
// Create default filters
const treeBase = document.getElementById("accountsTree");
const accountsBoxes = treeBase.querySelectorAll(
'input[type="checkbox"][name*="account"]'
);
let accounts = [];
2021-09-04 22:16:18 +02:00
accountsBoxes.forEach((accountbox) => {
const value = JSON.parse(accountbox.value);
2020-05-03 23:39:02 +02:00
accounts.push({ folders: value.folders });
});
filters = [];
accounts.forEach((account) => {
const inbox = account.folders.filter(
2021-09-04 22:16:18 +02:00
(folder) => folder.type === "inbox"
2020-05-03 23:39:02 +02:00
);
if (inbox.length > 0) {
2021-09-04 22:16:18 +02:00
let folder = {};
2023-09-06 22:04:41 +02:00
filters.push({
accountId: inbox[0].accountId,
folders: [inbox[0].path],
});
2020-05-03 23:39:02 +02:00
}
});
}
if (filters) {
const treeBase = document.getElementById("accountsTree");
2023-09-06 22:04:41 +02:00
filters.forEach((filter) => {
const account = treeBase.querySelector(
`input[name=${filter.accountId}]`
);
const checkboxes = Array.from(
account.parentNode.querySelectorAll(
'input[type="checkbox"]:not([name^="account"]):not([name^="parent-"])'
)
);
2021-09-04 22:16:18 +02:00
2023-09-06 22:04:41 +02:00
filter.folders.forEach((path) => {
2021-09-04 22:16:18 +02:00
checkboxes.forEach((checkbox) => {
const value = JSON.parse(checkbox.value);
2023-09-06 22:04:41 +02:00
if (value.path === path) {
2021-09-04 22:16:18 +02:00
checkbox.checked = true;
const event = document.createEvent("HTMLEvents");
event.initEvent("change", false, true);
checkbox.dispatchEvent(event);
}
});
2020-05-03 23:39:02 +02:00
});
2023-09-06 22:04:41 +02:00
});
2020-05-03 23:39:02 +02:00
}
},
onFiltersError: function (error) {
console.log(`Filters Error: ${error}`);
},
};
2021-09-04 22:16:18 +02:00
SysTrayX.StorageReset = {
reset: async function () {
// Clear checkboxes
const checkboxes = document
.getElementById("accountsTree")
.querySelectorAll('input[type="checkbox"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = false;
const event = document.createEvent("HTMLEvents");
event.initEvent("change", false, false);
checkbox.dispatchEvent(event);
});
await browser.storage.sync.clear();
await browser.storage.local.clear();
// Set new inbox checkboxes
SysTrayX.RestoreOptions.setFilters({
filters: undefined,
});
},
};
SysTrayX.StorageChanged = {
2020-04-04 18:02:35 +02:00
changed: function (changes, area) {
// Try to keep the preferences of the add-on and the app in sync
2020-01-23 23:28:52 +01:00
const changedItems = Object.keys(changes);
let changed_icon = false;
2020-05-22 22:54:10 +02:00
let changed_default_icon = false;
for (let item of changedItems) {
2023-08-29 19:41:21 +02:00
if (item === "minimizeType") {
SysTrayX.RestoreOptions.setMinimizeType({
minimizeType: changes[item].newValue,
});
}
if (item === "minimizeIconType") {
SysTrayX.RestoreOptions.setMinimizeIconType({
minimizeIconType: changes[item].newValue,
});
}
if (item === "closeType") {
SysTrayX.RestoreOptions.setCloseType({
closeType: changes[item].newValue,
});
}
2023-11-14 22:43:51 +01:00
if (item === "startupType") {
SysTrayX.RestoreOptions.setStartupType({
startupType: changes[item].newValue,
2023-08-29 19:41:21 +02:00
});
}
if (item === "restorePositions") {
SysTrayX.RestoreOptions.setRestorePositions({
restorePositions: changes[item].newValue,
});
}
if (item === "iconMime") {
SysTrayX.RestoreOptions.setIconMime({
2020-04-04 18:02:35 +02:00
iconMime: changes[item].newValue,
});
2020-05-22 23:56:07 +02:00
changed_icon = true;
}
if (item === "icon") {
SysTrayX.RestoreOptions.setIcon({ icon: changes[item].newValue });
changed_icon = true;
}
if (item === "iconType") {
SysTrayX.RestoreOptions.setIconType({
2020-04-04 18:02:35 +02:00
iconType: changes[item].newValue,
});
2020-05-22 23:56:07 +02:00
}
if (item === "defaultIconMime") {
SysTrayX.RestoreOptions.setDefaultIconMime({
defaultIconMime: changes[item].newValue,
});
changed_default_icon = true;
}
2020-05-22 22:54:10 +02:00
if (item === "defaultIcon") {
SysTrayX.RestoreOptions.setDefaultIcon({
defaultIcon: changes[item].newValue,
});
changed_default_icon = true;
}
if (item === "defaultIconType") {
SysTrayX.RestoreOptions.setDefaultIconType({
defaultIconType: changes[item].newValue,
});
}
2020-06-03 22:46:46 +02:00
if (item === "hideDefaultIcon") {
SysTrayX.RestoreOptions.setHideDefaultIcon({
hideDefaultIcon: changes[item].newValue,
});
}
2023-10-24 22:42:56 +02:00
if (item === "invertIcon") {
SysTrayX.RestoreOptions.setInvertIcon({
invertIcon: changes[item].newValue,
2023-08-29 19:41:21 +02:00
});
}
2020-04-05 14:39:19 +02:00
if (item === "showNumber") {
SysTrayX.RestoreOptions.setShowNumber({
showNumber: changes[item].newValue,
});
}
2023-08-27 21:01:48 +02:00
if (item === "showNewIndicator") {
SysTrayX.RestoreOptions.setShowNewIndicator({
showNewIndicator: changes[item].newValue,
});
}
2023-08-29 19:41:21 +02:00
if (item === "countType") {
SysTrayX.RestoreOptions.setCountType({
countType: changes[item].newValue,
});
}
if (item === "startupDelay") {
SysTrayX.RestoreOptions.setStartupDelay({
startupDelay: changes[item].newValue,
});
}
2023-11-13 20:14:30 +01:00
if (item === "apiCountMethod") {
SysTrayX.RestoreOptions.setApiCountMethod({
apiCountMethod: changes[item].newValue,
});
}
2020-04-05 14:39:19 +02:00
if (item === "numberColor") {
SysTrayX.RestoreOptions.setNumberColor({
numberColor: changes[item].newValue,
});
}
2020-05-26 22:39:25 +02:00
if (item === "numberSize") {
SysTrayX.RestoreOptions.setNumberSize({
numberSize: changes[item].newValue,
});
}
2020-12-11 20:57:30 +01:00
if (item === "numberAlignment") {
SysTrayX.RestoreOptions.setNumberAlignment({
numberAlignment: changes[item].newValue,
});
}
if (item === "numberMargins") {
SysTrayX.RestoreOptions.setNumberMargins({
numberMargins: changes[item].newValue,
});
}
2023-08-29 19:41:21 +02:00
if (item === "newIndicatorType") {
2023-10-13 20:56:34 +02:00
SysTrayX.RestoreOptions.setNewIndicatorType({
2023-08-29 19:41:21 +02:00
newIndicatorType: changes[item].newValue,
});
}
2023-08-29 19:41:21 +02:00
if (item === "newShadeColor") {
SysTrayX.RestoreOptions.setNewShadeColor({
newShadeColor: changes[item].newValue,
2020-12-06 00:36:31 +01:00
});
}
2023-08-25 18:18:20 +02:00
if (item === "startApp") {
SysTrayX.RestoreOptions.setStartApp({
startApp: changes[item].newValue,
});
}
2023-08-25 18:18:20 +02:00
if (item === "startAppArgs") {
SysTrayX.RestoreOptions.setStartAppArgs({
startAppArgs: changes[item].newValue,
});
}
if (item === "closeApp") {
SysTrayX.RestoreOptions.setCloseApp({
closeApp: changes[item].newValue,
});
}
if (item === "closeAppArgs") {
SysTrayX.RestoreOptions.setCloseAppArgs({
closeAppArgs: changes[item].newValue,
});
}
2023-12-04 23:12:03 +01:00
if (item === "showHideShortcut") {
SysTrayX.RestoreOptions.setShowHideShortcut({
showHideShortcut: changes[item].newValue,
});
}
2020-12-06 00:36:31 +01:00
2021-09-04 22:16:18 +02:00
if (item === "filters") {
SysTrayX.RestoreOptions.setFilters({
filters: changes[item].newValue,
});
}
if (item === "debug") {
SysTrayX.RestoreOptions.setDebug({
2020-04-04 18:02:35 +02:00
debug: changes[item].newValue,
});
}
}
2020-01-05 00:54:40 +01:00
2020-05-22 23:56:07 +02:00
if (changed_icon) {
SysTrayX.RestoreOptions.updateIconImage();
}
2020-01-09 21:03:06 +01:00
2020-05-22 23:56:07 +02:00
if (changed_default_icon) {
2020-05-22 22:54:10 +02:00
SysTrayX.RestoreOptions.updateDefaultIconImage();
}
//
// Update element
//
document.getElementById("debugselect").className = "active";
2020-05-22 22:54:10 +02:00
document.getElementById("defaulticonselect").className = "active";
document.getElementById("iconselect").className = "active";
2020-04-07 17:19:02 +02:00
document.getElementById("minimizeselect").className = "active";
document.getElementById("minimizeiconselect").className = "active";
2020-06-28 23:23:12 +02:00
document.getElementById("closeselect").className = "active";
2023-11-14 22:43:51 +01:00
document.getElementById("startupselect").className = "active";
2023-08-29 19:41:21 +02:00
document.getElementById("newindicatorselect").className = "active";
2023-08-25 20:44:32 +02:00
document.getElementById("startappselect").className = "active";
document.getElementById("closeappselect").className = "active";
2020-04-04 18:02:35 +02:00
},
};
2020-01-05 00:54:40 +01:00
2020-01-23 23:28:52 +01:00
//
// Main
//
2020-04-04 18:02:35 +02:00
2021-09-04 22:16:18 +02:00
async function start() {
// Set platform
SysTrayX.Info.platformInfo = await browser.runtime.getPlatformInfo();
2020-04-04 18:02:35 +02:00
2021-09-04 22:16:18 +02:00
// Set browser
SysTrayX.Info.browserInfo = await browser.runtime.getBrowserInfo();
2021-09-04 22:16:18 +02:00
const version = SysTrayX.Info.browserInfo.version.split(".");
SysTrayX.Info.browserInfo.majorVersion = version[0];
SysTrayX.Info.browserInfo.minorVersion = version[1];
// Get addon version
SysTrayX.Info.version = browser.runtime.getManifest().version;
SysTrayX.Info.displayInfo();
// Set link in options pageF
document.getElementById("VersioHomeLink").href =
"https://github.com/Ximi1970/systray-x/releases/tag/" +
SysTrayX.Info.version;
// Set the right default icon
if (SysTrayX.Info.browserInfo.majorVersion < 115) {
document.getElementById("defaultCustomIconImage").setAttribute("src","icons/Thunderbird.png");
} else {
document.getElementById("defaultCustomIconImage").setAttribute("src","icons/Thunderbird115.png");
}
2021-09-13 20:54:46 +02:00
if (SysTrayX.Info.platformInfo.os !== "linux") {
document.getElementById("kdeintegration").style.display = "none";
}
2023-11-13 20:14:30 +01:00
if (SysTrayX.Info.browserInfo.majorVersion < 115) {
document.getElementById("apicountmethod").style.display = "none";
}
2021-09-04 22:16:18 +02:00
// Setup account tree
const accountsInitPromise = () =>
new Promise((res) => res(SysTrayX.Accounts.init()));
await accountsInitPromise();
// Set the options
//document.addEventListener("DOMContentLoaded", SysTrayX.RestoreOptions.start);
SysTrayX.RestoreOptions.start();
// Enable save button
document
.querySelector('[name="saveform"]')
.addEventListener("submit", SysTrayX.SaveOptions.start);
// Enable reset button
document
.querySelector('[name="resetbutton"]')
.addEventListener("click", SysTrayX.StorageReset.reset);
2021-09-04 22:16:18 +02:00
browser.storage.onChanged.addListener(SysTrayX.StorageChanged.changed);
2021-09-05 14:10:04 +02:00
document.addEventListener("visibilitychange", function () {
if (document.visibilityState === "hidden") {
browser.storage.onChanged.removeListener(SysTrayX.StorageChanged.changed);
}
});
}
start();