diff --git a/src/hooks/Setting.js b/src/hooks/Setting.js
index 83312dd..2c61c10 100644
--- a/src/hooks/Setting.js
+++ b/src/hooks/Setting.js
@@ -25,17 +25,15 @@ const SettingContext = createContext({
reloadSetting: () => {},
});
-export function SettingProvider({ children, isSettingPage = false }) {
+export function SettingProvider({ children, context }) {
+ const isOptionsPage = useMemo(() => context === "options", [context]);
+
const {
data: setting,
isLoading,
update,
reload,
- } = useStorage(
- STOKEY_SETTING,
- DEFAULT_SETTING,
- isSettingPage ? KV_SETTING_KEY : ""
- );
+ } = useStorage(STOKEY_SETTING, DEFAULT_SETTING, KV_SETTING_KEY);
useEffect(() => {
if (typeof setting?.darkMode === "boolean") {
@@ -47,7 +45,7 @@ export function SettingProvider({ children, isSettingPage = false }) {
}, [setting?.darkMode, update]);
useEffect(() => {
- if (!isSettingPage) return;
+ if (!isOptionsPage) return;
(async () => {
try {
@@ -59,7 +57,7 @@ export function SettingProvider({ children, isSettingPage = false }) {
logger.error("Failed to fetch log level, using default.", error);
}
})();
- }, [isSettingPage, setting?.logLevel]);
+ }, [isOptionsPage, setting?.logLevel]);
const updateSetting = useCallback(
(objOrFn) => {
@@ -81,21 +79,21 @@ export function SettingProvider({ children, isSettingPage = false }) {
const value = useMemo(
() => ({
- isSettingPage,
+ context,
setting,
updateSetting,
updateChild,
reloadSetting: reload,
}),
- [isSettingPage, setting, updateSetting, updateChild, reload]
+ [context, setting, updateSetting, updateChild, reload]
);
if (isLoading) {
- return isSettingPage ?
数据加载出错,请刷新页面或卸载后重新安装。
diff --git a/src/hooks/Storage.js b/src/hooks/Storage.js index a6b9c3f..f828ef2 100644 --- a/src/hooks/Storage.js +++ b/src/hooks/Storage.js @@ -3,7 +3,7 @@ import { storage } from "../libs/storage"; import { kissLog } from "../libs/log"; import { syncData } from "../libs/sync"; import { useDebouncedCallback } from "./DebouncedCallback"; -import { getContext } from "../libs/browser"; +import { isOptions } from "../libs/browser"; /** * 用于将组件状态与 Storage 同步 @@ -80,8 +80,7 @@ export function useStorage(key, defaultVal = null, syncKey = "") { }); // 触发远端同步 - const context = getContext(); - if (syncKey && context === "options") { + if (syncKey && isOptions()) { debouncedSync(syncKey, data); } }, [key, syncKey, isLoading, data, debouncedSync]); diff --git a/src/libs/browser.js b/src/libs/browser.js index c6ad0bc..58d6340 100644 --- a/src/libs/browser.js +++ b/src/libs/browser.js @@ -37,6 +37,7 @@ export const getContext = () => { }; export const isBg = () => getContext() === "background"; +export const isOptions = () => getContext() === "options"; export const isBuiltinAIAvailable = "LanguageDetector" in globalThis && "Translator" in globalThis; diff --git a/src/libs/cache.js b/src/libs/cache.js index 2e30a6d..1527e50 100644 --- a/src/libs/cache.js +++ b/src/libs/cache.js @@ -16,7 +16,7 @@ import { blobToBase64 } from "./utils"; */ export const tryClearCaches = async () => { try { - if (isExt && !isBg) { + if (isExt && !isBg()) { await sendBgMsg(MSG_CLEAR_CACHES); } else { await caches.delete(CACHE_NAME); diff --git a/src/popup.js b/src/popup.js index 6c0c173..ed6229f 100644 --- a/src/popup.js +++ b/src/popup.js @@ -9,7 +9,7 @@ globalThis.__KISS_CONTEXT__ = "popup"; const root = ReactDOM.createRoot(document.getElementById("root")); root.render(