diff --git a/src/core/client.mjs b/src/core/client.mjs index dc8d0a8..9780a03 100644 --- a/src/core/client.mjs +++ b/src/core/client.mjs @@ -52,18 +52,17 @@ const insertMenu = async (db) => { let _contentWindow; const sendThemePing = () => { - if (!_contentWindow) return; const darkMode = document.body.classList.contains("dark"), notionTheme = darkMode ? "dark" : "light"; if (renderPing.theme === notionTheme) return; renderPing.theme = notionTheme; - _contentWindow.postMessage(renderPing, "*"); + _contentWindow?.postMessage?.(renderPing, "*"); }, sendRenderPing = (contentWindow) => { _contentWindow ??= contentWindow; if (!$modal.hasAttribute("open")) return; delete renderPing.theme; - _contentWindow.focus(); + _contentWindow?.focus?.(); sendThemePing(); }; diff --git a/src/core/menu/components/Checkbox.mjs b/src/core/menu/components/Checkbox.mjs index 8b49dba..af1bb6e 100644 --- a/src/core/menu/components/Checkbox.mjs +++ b/src/core/menu/components/Checkbox.mjs @@ -4,9 +4,10 @@ * (https://notion-enhancer.github.io/) under the MIT license */ -import { useState } from "../state.mjs"; +import { setState, useState } from "../state.mjs"; -function Checkbox({ _get, _set, ...props }) { +function Checkbox({ _get, _set, _requireReload = true, ...props }) { + let _initialValue; const { html, extendProps } = globalThis.__enhancerApi, $input = html` { const checked = (await _get?.()) ?? $input.checked; $input.checked = checked; + if (_requireReload) { + _initialValue ??= checked; + if (checked !== _initialValue) setState({ databaseUpdated: true }); + } }); return html`