Files
SysTray-X/webext/js/defaults.js
2020-05-12 20:09:05 +02:00

152 lines
3.3 KiB
JavaScript

//
// Set default icon
// Use <div> as storage
//
async function getDefaultIcon() {
function getStoredIcon(result) {
return result.iconMime && result.icon;
}
function onStoredIconError() {
return false;
}
const getIcon = browser.storage.sync.get(["iconMime", "icon"]);
const iconStored = await getIcon.then(getStoredIcon, onStoredIconError);
if (!iconStored) {
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);
})
);
// Convert image to storage param
let { iconMime, iconBase64 } = await toDataURL("icons/blank-icon.png").then(
(dataUrl) => {
const data = dataUrl.split(":").pop().split(",");
return { iconMime: data[0].split(";")[0], iconBase64: data[1] };
}
);
// Store default icon (base64)
browser.storage.sync.set({
iconMime: iconMime,
icon: iconBase64,
});
// Store in HTML
const iconDiv = document.getElementById("icon");
iconDiv.setAttribute("data-icon-mime", iconMime);
iconDiv.setAttribute("data-icon", iconBase64);
}
}
//
// Get window startup state
//
async function getStartupState() {
function getStartupState(result) {
return result.startMinimized === "true" ? "minimized" : "normal";
}
function onStartupStateError() {
return "normal";
}
const getState = browser.storage.sync.get("startMinimized");
return await getState.then(getStartupState, onStartupStateError);
}
//
// Get minimize on close state
//
async function getMinimizeOnClose() {
function getMinimizeOnClosePref(result) {
return result.minimizeOnClose === "true";
}
function onMinimizeOnClosePrefError() {
return true;
}
const getState = browser.storage.sync.get("minimizeOnClose");
return await getState.then(
getMinimizeOnClosePref,
onMinimizeOnClosePrefError
);
}
//
// Get filters
//
async function getFilters() {
function getFiltersCb(result) {
let filters = result.filters || undefined;
console.debug("Converting filters....")
// Store extended query filters
/*
browser.storage.sync.set({
filtersExt: filters,
});
*/
return true;
}
function onFiltersError() {
return false;
}
const getFilters = browser.storage.sync.get("filters");
return await getFilters.then(getFiltersCb, onFiltersError);
}
//
// Get extended filters
//
async function getFiltersExt() {
function getFiltersExtCb(result) {
const filtersExt = result.filtersExt || undefined;
console.debug("Accounts: " + SysTrayX.Messaging.accounts);
return filtersExt;
}
function onFiltersExtError() {
return undefined;
}
const getFiltersExt = browser.storage.sync.get("filtersExt");
return await getFiltersExt.then(getFiltersExtCb, onFiltersExtError);
}
//
// Get count type
//
async function getCountType() {
function getCountTypeCb(result) {
return result.countType || "0";
}
function onCountTypeError() {
return undefined;
}
const getCountType = browser.storage.sync.get("countType");
return await getCountType.then(getCountTypeCb, onCountTypeError);
}