删除规则组的引用拦截连附加规则一起查
之前只扫顶层 rules。附加规则(sub-rules)里的 RULE-SET 引用漏过的话, 删除会被内核重载拒掉——保护链路能回滚,但用户看到的是解析错误原文 而不是「谁在引用它」。
This commit is contained in:
@@ -23,6 +23,7 @@ import {
|
||||
rulesOf,
|
||||
setRuleProviders,
|
||||
setRules,
|
||||
subRuleSetReferences,
|
||||
} from '@shared/rules.ts'
|
||||
import type { IniImportPlan, RuleIssue } from '@shared/rules.ts'
|
||||
import type { ConfigObject } from '../../vendor/config-editor/index.ts'
|
||||
@@ -290,9 +291,14 @@ function onBlockedBackdrop(event: MouseEvent) {
|
||||
}
|
||||
|
||||
function askRemoveProvider(name: string) {
|
||||
const refs = ruleSetReferences(rules.value, name)
|
||||
// 附加规则(sub-rules)里的引用也要查:漏了的话删除会被内核重载拒掉,
|
||||
// 用户看到的是解析错误原文而不是「谁在引用它」
|
||||
const refs = [
|
||||
...ruleSetReferences(rules.value, name).map((i) => rules.value[i]!),
|
||||
...subRuleSetReferences(props.data, name),
|
||||
]
|
||||
if (refs.length > 0) {
|
||||
blockedProvider.value = { name, refs: refs.map((i) => rules.value[i]!) }
|
||||
blockedProvider.value = { name, refs }
|
||||
} else {
|
||||
removingProvider.value = name
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user