use debounce to sync setting

This commit is contained in:
Gabe Yuan
2023-09-01 16:39:57 +08:00
parent d570a0f1a2
commit 3d656cf5b0

View File

@@ -2,7 +2,8 @@ import { STOKEY_SETTING, DEFAULT_SETTING } from "../config";
import { useStorage } from "./Storage"; import { useStorage } from "./Storage";
import { useSync } from "./Sync"; import { useSync } from "./Sync";
import { trySyncSetting } from "../libs/sync"; import { trySyncSetting } from "../libs/sync";
import { createContext, useCallback, useContext } from "react"; import { createContext, useCallback, useContext, useMemo } from "react";
import { debounce } from "../libs/utils";
const SettingContext = createContext({ const SettingContext = createContext({
setting: null, setting: null,
@@ -17,14 +18,22 @@ export function SettingProvider({ children }) {
updateSync, updateSync,
} = useSync(); } = useSync();
const syncSetting = useMemo(
() =>
debounce(() => {
trySyncSetting();
}, [1000]),
[]
);
const updateSetting = useCallback( const updateSetting = useCallback(
async (obj) => { async (obj) => {
const updateAt = settingUpdateAt ? Date.now() : 0; const updateAt = settingUpdateAt ? Date.now() : 0;
await update(obj); await update(obj);
await updateSync({ settingUpdateAt: updateAt }); await updateSync({ settingUpdateAt: updateAt });
trySyncSetting(); syncSetting();
}, },
[settingUpdateAt, update, updateSync] [settingUpdateAt, update, updateSync, syncSetting]
); );
return ( return (