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]
);
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,

View File

@@ -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);
}

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 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 }) {
<Stack direction="row" alignItems="center" spacing={2}>
<FormControlLabel value={url} control={<Radio />} label={url} />
{syncAt && (
<span style={{ marginLeft: "0.5em", opacity: 0.6 }}>
[{new Date(syncAt).toLocaleString()}]
</span>
)}
{loading ? (
<CircularProgress size={16} />
) : (
@@ -773,6 +788,7 @@ function SubRules({ subRules }) {
const {
subList,
selectSub,
updateSub,
addSub,
delSub,
selectedUrl,
@@ -795,9 +811,11 @@ function SubRules({ subRules }) {
<SubRulesItem
key={item.url}
url={item.url}
syncAt={item.syncAt}
index={index}
selectedUrl={selectedUrl}
delSub={delSub}
updateSub={updateSub}
setSelectedRules={setSelectedRules}
/>
))}