From 364c8291198bffd37b2df00aa49f42cbbd1c2ef7 Mon Sep 17 00:00:00 2001 From: Gabe Yuan Date: Sat, 9 Sep 2023 19:26:22 +0800 Subject: [PATCH] fix sync bug --- src/hooks/Rules.js | 9 +-------- src/hooks/Setting.js | 9 +-------- src/libs/sync.js | 32 +++++++++++++++----------------- 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/hooks/Rules.js b/src/hooks/Rules.js index 08acd7e..64c7f8f 100644 --- a/src/hooks/Rules.js +++ b/src/hooks/Rules.js @@ -1,7 +1,6 @@ import { STOKEY_RULES, DEFAULT_RULES } from "../config"; import { useStorage } from "./Storage"; import { trySyncRules } from "../libs/sync"; -import { useSync } from "./Sync"; import { checkRules } from "../libs/rules"; import { useCallback } from "react"; @@ -11,19 +10,13 @@ import { useCallback } from "react"; */ export function useRules() { const { data: list, save } = useStorage(STOKEY_RULES, DEFAULT_RULES); - const { - sync: { rulesUpdateAt }, - updateSync, - } = useSync(); const updateRules = useCallback( async (rules) => { - const updateAt = rulesUpdateAt ? Date.now() : 0; await save(rules); - await updateSync({ rulesUpdateAt: updateAt }); trySyncRules(); }, - [rulesUpdateAt, save, updateSync] + [save] ); const add = useCallback( diff --git a/src/hooks/Setting.js b/src/hooks/Setting.js index 95c1556..16c40f7 100644 --- a/src/hooks/Setting.js +++ b/src/hooks/Setting.js @@ -1,6 +1,5 @@ import { STOKEY_SETTING, DEFAULT_SETTING } from "../config"; import { useStorage } from "./Storage"; -import { useSync } from "./Sync"; import { trySyncSetting } from "../libs/sync"; import { createContext, useCallback, useContext, useMemo } from "react"; import { debounce } from "../libs/utils"; @@ -16,10 +15,6 @@ export function SettingProvider({ children }) { STOKEY_SETTING, DEFAULT_SETTING ); - const { - sync: { settingUpdateAt }, - updateSync, - } = useSync(); const syncSetting = useMemo( () => @@ -31,12 +26,10 @@ export function SettingProvider({ children }) { const updateSetting = useCallback( async (obj) => { - const updateAt = settingUpdateAt ? Date.now() : 0; await update(obj); - await updateSync({ settingUpdateAt: updateAt }); syncSetting(); }, - [settingUpdateAt, update, updateSync, syncSetting] + [update, syncSetting] ); if (loading) { diff --git a/src/libs/sync.js b/src/libs/sync.js index f479ae4..695a469 100644 --- a/src/libs/sync.js +++ b/src/libs/sync.js @@ -20,7 +20,7 @@ import { sha256 } from "./utils"; * @returns */ const syncSetting = async (isBg = false) => { - const { syncUrl, syncKey, settingUpdateAt } = await getSyncWithDefault(); + const { syncUrl, syncKey, settingUpdateAt = 0 } = await getSyncWithDefault(); if (!syncUrl || !syncKey) { return; } @@ -37,16 +37,15 @@ const syncSetting = async (isBg = false) => { isBg ); - if (res && res.updateAt > settingUpdateAt) { - await updateSync({ - settingUpdateAt: res.updateAt, - settingSyncAt: res.updateAt, - }); + if (res.updateAt > settingUpdateAt) { await setSetting(res.value); - return res.value; - } else { - await updateSync({ settingSyncAt: res.updateAt }); } + await updateSync({ + settingUpdateAt: res.updateAt, + settingSyncAt: Date.now(), + }); + + return res.value; }; export const trySyncSetting = async (isBg = false) => { @@ -79,16 +78,15 @@ const syncRules = async (isBg = false) => { isBg ); - if (res && res.updateAt > rulesUpdateAt) { - await updateSync({ - rulesUpdateAt: res.updateAt, - rulesSyncAt: res.updateAt, - }); + if (res.updateAt > rulesUpdateAt) { await setRules(res.value); - return res.value; - } else { - await updateSync({ rulesSyncAt: res.updateAt }); } + await updateSync({ + rulesUpdateAt: res.updateAt, + rulesSyncAt: Date.now(), + }); + + return res.value; }; export const trySyncRules = async (isBg = false) => {