show subrule sync time
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|||||||
Reference in New Issue
Block a user