From d1f83884aae025d3558b61205747af0414e71c2d Mon Sep 17 00:00:00 2001 From: dragonwocky Date: Sat, 14 Jan 2023 22:17:28 +1100 Subject: [PATCH] chore(electron-compat): promisify db methods, import svgs as js instead of reading files --- src/api/electron.cjs | 18 ++++++++++-------- src/api/interface.js | 9 ++------- src/assets/colour.svg | 1 - src/assets/icons.svg.js | 12 ++++++++++++ src/assets/monochrome.svg | 1 - src/core/menu/components.mjs | 4 ++-- src/load.mjs | 1 + 7 files changed, 27 insertions(+), 19 deletions(-) delete mode 100644 src/assets/colour.svg create mode 100644 src/assets/icons.svg.js delete mode 100644 src/assets/monochrome.svg diff --git a/src/api/electron.cjs b/src/api/electron.cjs index b9efeec..a8364de 100644 --- a/src/api/electron.cjs +++ b/src/api/electron.cjs @@ -75,28 +75,30 @@ const initDatabase = (namespace, fallbacks = {}) => { }); return { + // wrap methods in promises for consistency w/ chrome.storage get: (key) => { const fallback = fallbacks[key]; key = key.startsWith(namespace) ? key : namespace + key; try { - return JSON.parse(select.get(key)?.value); - } catch { - return select.get(key)?.value ?? fallback; - } + const value = JSON.parse(select.get(key)?.value); + return Promise.resolve(value ?? fallback); + } catch {} + return Promise.resolve(fallback); }, set: (key, value) => { key = key.startsWith(namespace) ? key : namespace + key; value = JSON.stringify(value); - return select.get(key) === undefined - ? insert.run(key, value) - : update.run(value, key); + if (select.get(key) === undefined) { + insert.run(key, value); + } else update.run(value, key); + return Promise.resolve(true); }, dump: () => { const entries = dump .all() .map(({ key, value }) => [key, value]) .filter(([key]) => key.startsWith(namespace)); - return Object.fromEntries(entries); + return Promise.resolve(Object.fromEntries(entries)); }, populate, }; diff --git a/src/api/interface.js b/src/api/interface.js index fab4eb2..c67db69 100644 --- a/src/api/interface.js +++ b/src/api/interface.js @@ -7,13 +7,7 @@ "use strict"; const { twind, htm } = globalThis, - { readFile } = globalThis.__enhancerApi; - -let iconColour, iconMonochrome; -(async () => { - iconColour = await readFile("/assets/colour.svg"); - iconMonochrome = await readFile("/assets/monochrome.svg"); -})(); + { readFile, iconColour, iconMonochrome } = globalThis.__enhancerApi; const kebabToPascalCase = (string) => string[0].toUpperCase() + @@ -56,6 +50,7 @@ const encodeSvg = (svg) => svg = hToString(type, props, ...children); } // https://antfu.me/posts/icons-in-pure-css + if (!svg) console.log(icon); const dataUri = `url("data:image/svg+xml;utf8,${encodeSvg(svg)}")`; if (mode === "auto") mode = undefined; mode ??= svg.includes("currentColor") ? "mask" : "bg"; diff --git a/src/assets/colour.svg b/src/assets/colour.svg deleted file mode 100644 index 5b3c685..0000000 --- a/src/assets/colour.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons.svg.js b/src/assets/icons.svg.js new file mode 100644 index 0000000..108cece --- /dev/null +++ b/src/assets/icons.svg.js @@ -0,0 +1,12 @@ +/** + * notion-enhancer + * (c) 2023 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +const iconColour = ``; + +const iconMonochrome = ``; + +globalThis.__enhancerApi ??= {}; +Object.assign(globalThis.__enhancerApi, { iconColour, iconMonochrome }); diff --git a/src/assets/monochrome.svg b/src/assets/monochrome.svg deleted file mode 100644 index c963a36..0000000 --- a/src/assets/monochrome.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/core/menu/components.mjs b/src/core/menu/components.mjs index ccc6a12..edd15e2 100644 --- a/src/core/menu/components.mjs +++ b/src/core/menu/components.mjs @@ -538,8 +538,8 @@ function Toggle({ _get, _set, ...props }) { transition duration-200 bg-[color:var(--theme--bg-hover)]" >