show subrule sync time

This commit is contained in:
Gabe Yuan
2023-09-08 15:16:10 +08:00
parent 56350de2cf
commit d48296046e
3 changed files with 39 additions and 2 deletions

View File

@@ -32,10 +32,23 @@ export function useSubRules() {
[list, updateSetting] [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( const addSub = useCallback(
async (url) => { async (url) => {
const subrulesList = [...list]; const subrulesList = [...list];
subrulesList.push({ url, selected: false }); subrulesList.push({ url, selected: false, syncAt: Date.now() });
await updateSetting({ subrulesList }); await updateSetting({ subrulesList });
}, },
[list, updateSetting] [list, updateSetting]
@@ -70,6 +83,7 @@ export function useSubRules() {
return { return {
subList: list, subList: list,
selectSub, selectSub,
updateSub,
addSub, addSub,
delSub, delSub,
selectedSub, selectedSub,

View File

@@ -4,6 +4,7 @@ import {
updateSync, updateSync,
setSubRules, setSubRules,
getSubRules, getSubRules,
updateSetting,
} from "./storage"; } from "./storage";
import { apiFetchRules } from "../apis"; import { apiFetchRules } from "../apis";
import { checkRules } from "./rules"; import { checkRules } from "./rules";
@@ -54,6 +55,10 @@ export const trySyncAllSubRules = async ({ subrulesList }, isBg = false) => {
await syncAllSubRules(subrulesList, isBg); await syncAllSubRules(subrulesList, isBg);
await updateSync({ subRulesSyncAt: now }); await updateSync({ subRulesSyncAt: now });
} }
subrulesList.forEach((item) => {
item.syncAt = now;
});
await updateSetting({ subrulesList });
} catch (err) { } catch (err) {
console.log("[try sync all subrules]", err); console.log("[try sync all subrules]", err);
} }

View File

@@ -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 [loading, setLoading] = useState(false);
const handleDel = async () => { const handleDel = async () => {
@@ -638,6 +646,7 @@ function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) {
if (rules.length > 0 && url === selectedUrl) { if (rules.length > 0 && url === selectedUrl) {
setSelectedRules(rules); setSelectedRules(rules);
} }
await updateSub(url, { syncAt: Date.now() });
} catch (err) { } catch (err) {
console.log("[sync sub rules]", err); console.log("[sync sub rules]", err);
} finally { } finally {
@@ -649,6 +658,12 @@ function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) {
<Stack direction="row" alignItems="center" spacing={2}> <Stack direction="row" alignItems="center" spacing={2}>
<FormControlLabel value={url} control={<Radio />} label={url} /> <FormControlLabel value={url} control={<Radio />} label={url} />
{syncAt && (
<span style={{ marginLeft: "0.5em", opacity: 0.6 }}>
[{new Date(syncAt).toLocaleString()}]
</span>
)}
{loading ? ( {loading ? (
<CircularProgress size={16} /> <CircularProgress size={16} />
) : ( ) : (
@@ -773,6 +788,7 @@ function SubRules({ subRules }) {
const { const {
subList, subList,
selectSub, selectSub,
updateSub,
addSub, addSub,
delSub, delSub,
selectedUrl, selectedUrl,
@@ -795,9 +811,11 @@ function SubRules({ subRules }) {
<SubRulesItem <SubRulesItem
key={item.url} key={item.url}
url={item.url} url={item.url}
syncAt={item.syncAt}
index={index} index={index}
selectedUrl={selectedUrl} selectedUrl={selectedUrl}
delSub={delSub} delSub={delSub}
updateSub={updateSub}
setSelectedRules={setSelectedRules} setSelectedRules={setSelectedRules}
/> />
))} ))}