diff --git a/src/config/i18n.js b/src/config/i18n.js index e7d1e4b..cc97ebc 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -413,6 +413,11 @@ export const I18N = { en: `Inject Subscribe Rules`, zh_TW: `注入訂閱規則`, }, + global_rule: { + zh: `全局规则`, + en: `Global Rule`, + zh_TW: `全域規則`, + }, personal_rules: { zh: `个人规则`, en: `Rules`, diff --git a/src/views/Options/Rules.js b/src/views/Options/Rules.js index 9469723..31e63b6 100644 --- a/src/views/Options/Rules.js +++ b/src/views/Options/Rules.js @@ -696,9 +696,9 @@ function RuleFields({ rule, rules, setShow, setKeyword }) { ); } -function RuleAccordion({ rule, rules }) { +function RuleAccordion({ rule, rules, isExpanded = false }) { const i18n = useI18n(); - const [expanded, setExpanded] = useState(false); + const [expanded, setExpanded] = useState(isExpanded); const handleChange = (e) => { setExpanded((pre) => !pre); @@ -767,9 +767,8 @@ function ShareButton({ rules, injectRules, selectedUrl }) { ); } -function UserRules({ subRules }) { +function UserRules({ subRules, rules }) { const i18n = useI18n(); - const rules = useRules(); const [showAdd, setShowAdd] = useState(false); const { setting, updateSetting } = useSetting(); 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 ( + + + + ); +} + export default function Rules() { const i18n = useI18n(); const [activeTab, setActiveTab] = useState(0); const subRules = useSubRules(); + const rules = useRules(); const handleTabChange = (e, newValue) => { setActiveTab(newValue); @@ -1162,18 +1180,22 @@ export default function Rules() { + - + + );