- {subRules
+ {selectedRules
.filter(
(rule) =>
rule.pattern.includes(keyword) || keyword.includes(rule.pattern)
@@ -586,13 +577,13 @@ function UserRules() {
);
}
-function SubRulesItem({ index, url, selectedUrl, subrules, setRules }) {
+function SubRulesItem({ index, url, selectedUrl, delSub, setSelectedRules }) {
const [loading, setLoading] = useState(false);
const handleDel = async () => {
try {
- await subrules.del(url);
- await rulesCache.del(url);
+ await delSub(url);
+ await delSubRules(url);
} catch (err) {
console.log("[del subrules]", err);
}
@@ -603,7 +594,7 @@ function SubRulesItem({ index, url, selectedUrl, subrules, setRules }) {
setLoading(true);
const rules = await syncSubRules(url);
if (rules.length > 0 && url === selectedUrl) {
- setRules(rules);
+ setSelectedRules(rules);
}
} catch (err) {
console.log("[sync sub rules]", err);
@@ -633,7 +624,7 @@ function SubRulesItem({ index, url, selectedUrl, subrules, setRules }) {
);
}
-function SubRulesEdit({ subrules }) {
+function SubRulesEdit({ subList, addSub }) {
const i18n = useI18n();
const [inputText, setInputText] = useState("");
const [inputError, setInputError] = useState("");
@@ -656,7 +647,7 @@ function SubRulesEdit({ subrules }) {
return;
}
- if (subrules.list.find((item) => item.url === url)) {
+ if (subList.find((item) => item.url === url)) {
setInputError(i18n("error_duplicate_values"));
return;
}
@@ -667,7 +658,7 @@ function SubRulesEdit({ subrules }) {
if (rules.length === 0) {
throw new Error("empty rules");
}
- await subrules.add(url);
+ await addSub(url);
setShowInput(false);
setInputText("");
} catch (err) {
@@ -735,47 +726,36 @@ function SubRulesEdit({ subrules }) {
);
}
-function SubRules() {
- const [loading, setLoading] = useState(false);
- const [rules, setRules] = useState([]);
- const subrules = useSubrules();
- const selectedSub = subrules.list.find((item) => item.selected);
+function SubRules({ subRules }) {
+ const {
+ subList,
+ selectSub,
+ addSub,
+ delSub,
+ selectedUrl,
+ selectedRules,
+ setSelectedRules,
+ loading,
+ } = subRules;
const handleSelect = (e) => {
const url = e.target.value;
- subrules.select(url);
+ selectSub(url);
};
- useEffect(() => {
- (async () => {
- if (selectedSub?.url) {
- try {
- setLoading(true);
-
- const rules = await loadSubRules(selectedSub?.url);
- setRules(rules);
- } catch (err) {
- console.log("[load rules]", err);
- } finally {
- setLoading(false);
- }
- }
- })();
- }, [selectedSub?.url]);
-
return (
-
+
-
- {subrules.list.map((item, index) => (
+
+ {subList.map((item, index) => (
))}
@@ -786,7 +766,9 @@ function SubRules() {
) : (
- rules.map((rule) => )
+ selectedRules.map((rule) => (
+
+ ))
)}
@@ -796,6 +778,7 @@ function SubRules() {
export default function Rules() {
const i18n = useI18n();
const [activeTab, setActiveTab] = useState(0);
+ const subRules = useSubRules();
const handleTabChange = (e, newValue) => {
setActiveTab(newValue);
@@ -816,8 +799,12 @@ export default function Rules() {
- {activeTab === 0 && }
- {activeTab === 1 && }
+
+ {activeTab === 0 && }
+
+
+ {activeTab === 1 && }
+