fix sync bug
This commit is contained in:
@@ -14,7 +14,7 @@ export function useRules() {
|
|||||||
const updateRules = useCallback(
|
const updateRules = useCallback(
|
||||||
async (rules) => {
|
async (rules) => {
|
||||||
await save(rules);
|
await save(rules);
|
||||||
trySyncRules();
|
trySyncRules(false, true);
|
||||||
},
|
},
|
||||||
[save]
|
[save]
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export function SettingProvider({ children }) {
|
|||||||
const syncSetting = useMemo(
|
const syncSetting = useMemo(
|
||||||
() =>
|
() =>
|
||||||
debounce(() => {
|
debounce(() => {
|
||||||
trySyncSetting();
|
trySyncSetting(false, true);
|
||||||
}, [2000]),
|
}, [2000]),
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -150,5 +150,5 @@ export const saveRule = async (newRule) => {
|
|||||||
rules.unshift(newRule);
|
rules.unshift(newRule);
|
||||||
}
|
}
|
||||||
await setRules(rules);
|
await setRules(rules);
|
||||||
trySyncRules();
|
trySyncRules(false, true);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,12 +19,21 @@ import { sha256 } from "./utils";
|
|||||||
* 同步设置
|
* 同步设置
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const syncSetting = async (isBg = false) => {
|
const syncSetting = async (isBg = false, isForce = false) => {
|
||||||
const { syncUrl, syncKey, settingUpdateAt = 0 } = await getSyncWithDefault();
|
let {
|
||||||
|
syncUrl,
|
||||||
|
syncKey,
|
||||||
|
settingUpdateAt = 0,
|
||||||
|
settingSyncAt = 0,
|
||||||
|
} = await getSyncWithDefault();
|
||||||
if (!syncUrl || !syncKey) {
|
if (!syncUrl || !syncKey) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isForce) {
|
||||||
|
settingUpdateAt = Date.now();
|
||||||
|
}
|
||||||
|
|
||||||
const setting = await getSettingWithDefault();
|
const setting = await getSettingWithDefault();
|
||||||
const res = await apiSyncData(
|
const res = await apiSyncData(
|
||||||
syncUrl,
|
syncUrl,
|
||||||
@@ -32,7 +41,7 @@ const syncSetting = async (isBg = false) => {
|
|||||||
{
|
{
|
||||||
key: KV_SETTING_KEY,
|
key: KV_SETTING_KEY,
|
||||||
value: setting,
|
value: setting,
|
||||||
updateAt: settingUpdateAt,
|
updateAt: settingSyncAt === 0 ? 0 : settingUpdateAt,
|
||||||
},
|
},
|
||||||
isBg
|
isBg
|
||||||
);
|
);
|
||||||
@@ -48,9 +57,9 @@ const syncSetting = async (isBg = false) => {
|
|||||||
return res.value;
|
return res.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const trySyncSetting = async (isBg = false) => {
|
export const trySyncSetting = async (isBg = false, isForce = false) => {
|
||||||
try {
|
try {
|
||||||
return await syncSetting(isBg);
|
return await syncSetting(isBg, isForce);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("[sync setting]", err);
|
console.log("[sync setting]", err);
|
||||||
}
|
}
|
||||||
@@ -60,12 +69,21 @@ export const trySyncSetting = async (isBg = false) => {
|
|||||||
* 同步规则
|
* 同步规则
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const syncRules = async (isBg = false) => {
|
const syncRules = async (isBg = false, isForce = false) => {
|
||||||
const { syncUrl, syncKey, rulesUpdateAt } = await getSyncWithDefault();
|
let {
|
||||||
|
syncUrl,
|
||||||
|
syncKey,
|
||||||
|
rulesUpdateAt = 0,
|
||||||
|
rulesSyncAt = 0,
|
||||||
|
} = await getSyncWithDefault();
|
||||||
if (!syncUrl || !syncKey) {
|
if (!syncUrl || !syncKey) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isForce) {
|
||||||
|
rulesUpdateAt = Date.now();
|
||||||
|
}
|
||||||
|
|
||||||
const rules = await getRulesWithDefault();
|
const rules = await getRulesWithDefault();
|
||||||
const res = await apiSyncData(
|
const res = await apiSyncData(
|
||||||
syncUrl,
|
syncUrl,
|
||||||
@@ -73,7 +91,7 @@ const syncRules = async (isBg = false) => {
|
|||||||
{
|
{
|
||||||
key: KV_RULES_KEY,
|
key: KV_RULES_KEY,
|
||||||
value: rules,
|
value: rules,
|
||||||
updateAt: rulesUpdateAt,
|
updateAt: rulesSyncAt === 0 ? 0 : rulesUpdateAt,
|
||||||
},
|
},
|
||||||
isBg
|
isBg
|
||||||
);
|
);
|
||||||
@@ -89,9 +107,9 @@ const syncRules = async (isBg = false) => {
|
|||||||
return res.value;
|
return res.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const trySyncRules = async (isBg = false) => {
|
export const trySyncRules = async (isBg = false, isForce = false) => {
|
||||||
try {
|
try {
|
||||||
return await syncRules(isBg);
|
return await syncRules(isBg, isForce);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("[sync user rules]", err);
|
console.log("[sync user rules]", err);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user