feat: move global rule to a separate tab
This commit is contained in:
@@ -413,6 +413,11 @@ export const I18N = {
|
|||||||
en: `Inject Subscribe Rules`,
|
en: `Inject Subscribe Rules`,
|
||||||
zh_TW: `注入訂閱規則`,
|
zh_TW: `注入訂閱規則`,
|
||||||
},
|
},
|
||||||
|
global_rule: {
|
||||||
|
zh: `全局规则`,
|
||||||
|
en: `Global Rule`,
|
||||||
|
zh_TW: `全域規則`,
|
||||||
|
},
|
||||||
personal_rules: {
|
personal_rules: {
|
||||||
zh: `个人规则`,
|
zh: `个人规则`,
|
||||||
en: `Rules`,
|
en: `Rules`,
|
||||||
|
|||||||
@@ -696,9 +696,9 @@ function RuleFields({ rule, rules, setShow, setKeyword }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function RuleAccordion({ rule, rules }) {
|
function RuleAccordion({ rule, rules, isExpanded = false }) {
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const [expanded, setExpanded] = useState(false);
|
const [expanded, setExpanded] = useState(isExpanded);
|
||||||
|
|
||||||
const handleChange = (e) => {
|
const handleChange = (e) => {
|
||||||
setExpanded((pre) => !pre);
|
setExpanded((pre) => !pre);
|
||||||
@@ -767,9 +767,8 @@ function ShareButton({ rules, injectRules, selectedUrl }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function UserRules({ subRules }) {
|
function UserRules({ subRules, rules }) {
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const rules = useRules();
|
|
||||||
const [showAdd, setShowAdd] = useState(false);
|
const [showAdd, setShowAdd] = useState(false);
|
||||||
const { setting, updateSetting } = useSetting();
|
const { setting, updateSetting } = useSetting();
|
||||||
const [keyword, setKeyword] = useState("");
|
const [keyword, setKeyword] = useState("");
|
||||||
@@ -1140,10 +1139,29 @@ function SubRules({ subRules }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GlobalRule({ rules }) {
|
||||||
|
if (!rules.list) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const globalRule = rules.list[rules.list.length - 1];
|
||||||
|
return (
|
||||||
|
<Stack spacing={3}>
|
||||||
|
<RuleAccordion
|
||||||
|
key={globalRule.pattern}
|
||||||
|
rule={globalRule}
|
||||||
|
rules={rules}
|
||||||
|
isExpanded={true}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Rules() {
|
export default function Rules() {
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const [activeTab, setActiveTab] = useState(0);
|
const [activeTab, setActiveTab] = useState(0);
|
||||||
const subRules = useSubRules();
|
const subRules = useSubRules();
|
||||||
|
const rules = useRules();
|
||||||
|
|
||||||
const handleTabChange = (e, newValue) => {
|
const handleTabChange = (e, newValue) => {
|
||||||
setActiveTab(newValue);
|
setActiveTab(newValue);
|
||||||
@@ -1162,18 +1180,22 @@ export default function Rules() {
|
|||||||
|
|
||||||
<Box sx={{ borderBottom: 1, borderColor: "divider" }}>
|
<Box sx={{ borderBottom: 1, borderColor: "divider" }}>
|
||||||
<Tabs value={activeTab} onChange={handleTabChange}>
|
<Tabs value={activeTab} onChange={handleTabChange}>
|
||||||
|
<Tab label={i18n("global_rule")} />
|
||||||
<Tab label={i18n("personal_rules")} />
|
<Tab label={i18n("personal_rules")} />
|
||||||
<Tab label={i18n("subscribe_rules")} />
|
<Tab label={i18n("subscribe_rules")} />
|
||||||
<Tab label={i18n("overwrite_subscribe_rules")} />
|
<Tab label={i18n("overwrite_subscribe_rules")} />
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Box>
|
</Box>
|
||||||
<div hidden={activeTab !== 0}>
|
<div hidden={activeTab !== 0}>
|
||||||
{activeTab === 0 && <UserRules subRules={subRules} />}
|
{activeTab === 0 && <GlobalRule rules={rules} />}
|
||||||
</div>
|
</div>
|
||||||
<div hidden={activeTab !== 1}>
|
<div hidden={activeTab !== 1}>
|
||||||
{activeTab === 1 && <SubRules subRules={subRules} />}
|
{activeTab === 1 && <UserRules subRules={subRules} rules={rules} />}
|
||||||
</div>
|
</div>
|
||||||
<div hidden={activeTab !== 2}>{activeTab === 2 && <OwSubRule />}</div>
|
<div hidden={activeTab !== 2}>
|
||||||
|
{activeTab === 2 && <SubRules subRules={subRules} />}
|
||||||
|
</div>
|
||||||
|
<div hidden={activeTab !== 3}>{activeTab === 3 && <OwSubRule />}</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user