fix: sync bug
This commit is contained in:
@@ -13,5 +13,11 @@ export function useDebouncedCallback(callback, delay) {
|
|||||||
[delay]
|
[delay]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
return () => {
|
||||||
|
debouncedCallback.cancel();
|
||||||
|
};
|
||||||
|
}, [debouncedCallback]);
|
||||||
|
|
||||||
return debouncedCallback;
|
return debouncedCallback;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,13 +25,17 @@ const SettingContext = createContext({
|
|||||||
reloadSetting: () => {},
|
reloadSetting: () => {},
|
||||||
});
|
});
|
||||||
|
|
||||||
export function SettingProvider({ children }) {
|
export function SettingProvider({ children, isSettingPage }) {
|
||||||
const {
|
const {
|
||||||
data: setting,
|
data: setting,
|
||||||
isLoading,
|
isLoading,
|
||||||
update,
|
update,
|
||||||
reload,
|
reload,
|
||||||
} = useStorage(STOKEY_SETTING, DEFAULT_SETTING, KV_SETTING_KEY);
|
} = useStorage(
|
||||||
|
STOKEY_SETTING,
|
||||||
|
DEFAULT_SETTING,
|
||||||
|
isSettingPage ? KV_SETTING_KEY : ""
|
||||||
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (typeof setting?.darkMode === "boolean") {
|
if (typeof setting?.darkMode === "boolean") {
|
||||||
@@ -43,6 +47,8 @@ export function SettingProvider({ children }) {
|
|||||||
}, [setting?.darkMode, update]);
|
}, [setting?.darkMode, update]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!isSettingPage) return;
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
logger.setLevel(setting?.logLevel);
|
logger.setLevel(setting?.logLevel);
|
||||||
@@ -53,7 +59,7 @@ export function SettingProvider({ children }) {
|
|||||||
logger.error("Failed to fetch log level, using default.", error);
|
logger.error("Failed to fetch log level, using default.", error);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}, [setting]);
|
}, [isSettingPage, setting?.logLevel]);
|
||||||
|
|
||||||
const updateSetting = useCallback(
|
const updateSetting = useCallback(
|
||||||
(objOrFn) => {
|
(objOrFn) => {
|
||||||
|
|||||||
@@ -62,10 +62,12 @@ class Logger {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.config.level = newLevelObject;
|
if (this.config.level.value !== newLevelObject.value) {
|
||||||
console.log(
|
this.config.level = newLevelObject;
|
||||||
`[${this.config.prefix}] Log level dynamically set to ${this.config.level.name}`
|
console.log(
|
||||||
);
|
`[${this.config.prefix}] Log level dynamically set to ${this.config.level.name}`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -59,14 +59,21 @@ export const sleep = (delay) =>
|
|||||||
*/
|
*/
|
||||||
export const debounce = (func, delay = 200) => {
|
export const debounce = (func, delay = 200) => {
|
||||||
let timer = null;
|
let timer = null;
|
||||||
return (...args) => {
|
|
||||||
|
const debouncedFunc = (...args) => {
|
||||||
timer && clearTimeout(timer);
|
timer && clearTimeout(timer);
|
||||||
timer = setTimeout(() => {
|
timer = setTimeout(() => {
|
||||||
func(...args);
|
func(...args);
|
||||||
clearTimeout(timer);
|
|
||||||
timer = null;
|
timer = null;
|
||||||
}, delay);
|
}, delay);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
debouncedFunc.cancel = () => {
|
||||||
|
clearTimeout(timer);
|
||||||
|
timer = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
return debouncedFunc;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export default function Options() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SettingProvider>
|
<SettingProvider isSettingPage={true}>
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
<AlertProvider>
|
<AlertProvider>
|
||||||
<ConfirmProvider>
|
<ConfirmProvider>
|
||||||
|
|||||||
Reference in New Issue
Block a user