use debounce to sync setting
This commit is contained in:
@@ -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 (
|
||||||
|
|||||||
Reference in New Issue
Block a user