diff --git a/src/hooks/SubRules.js b/src/hooks/SubRules.js index 0c13025..25b3de8 100644 --- a/src/hooks/SubRules.js +++ b/src/hooks/SubRules.js @@ -32,10 +32,23 @@ export function useSubRules() { [list, updateSetting] ); + const updateSub = useCallback( + async (url, obj) => { + const subrulesList = [...list]; + subrulesList.forEach((item) => { + if (item.url === url) { + Object.assign(item, obj); + } + }); + await updateSetting({ subrulesList }); + }, + [list, updateSetting] + ); + const addSub = useCallback( async (url) => { const subrulesList = [...list]; - subrulesList.push({ url, selected: false }); + subrulesList.push({ url, selected: false, syncAt: Date.now() }); await updateSetting({ subrulesList }); }, [list, updateSetting] @@ -70,6 +83,7 @@ export function useSubRules() { return { subList: list, selectSub, + updateSub, addSub, delSub, selectedSub, diff --git a/src/libs/subRules.js b/src/libs/subRules.js index af8cba1..b537edb 100644 --- a/src/libs/subRules.js +++ b/src/libs/subRules.js @@ -4,6 +4,7 @@ import { updateSync, setSubRules, getSubRules, + updateSetting, } from "./storage"; import { apiFetchRules } from "../apis"; import { checkRules } from "./rules"; @@ -54,6 +55,10 @@ export const trySyncAllSubRules = async ({ subrulesList }, isBg = false) => { await syncAllSubRules(subrulesList, isBg); await updateSync({ subRulesSyncAt: now }); } + subrulesList.forEach((item) => { + item.syncAt = now; + }); + await updateSetting({ subrulesList }); } catch (err) { console.log("[try sync all subrules]", err); } diff --git a/src/views/Options/Rules.js b/src/views/Options/Rules.js index 81b2170..6e0d9a6 100644 --- a/src/views/Options/Rules.js +++ b/src/views/Options/Rules.js @@ -619,7 +619,15 @@ function UserRules({ subRules }) { ); } -function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) { +function SubRulesItem({ + index, + url, + syncAt, + selectedUrl, + delSub, + updateSub, + setSelectedRules, +}) { const [loading, setLoading] = useState(false); const handleDel = async () => { @@ -638,6 +646,7 @@ function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) { if (rules.length > 0 && url === selectedUrl) { setSelectedRules(rules); } + await updateSub(url, { syncAt: Date.now() }); } catch (err) { console.log("[sync sub rules]", err); } finally { @@ -649,6 +658,12 @@ function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) { } label={url} /> + {syncAt && ( + + [{new Date(syncAt).toLocaleString()}] + + )} + {loading ? ( ) : ( @@ -773,6 +788,7 @@ function SubRules({ subRules }) { const { subList, selectSub, + updateSub, addSub, delSub, selectedUrl, @@ -795,9 +811,11 @@ function SubRules({ subRules }) { ))}