mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 04:43:44 +08:00
fix: rules editor get groups error
This commit is contained in:
parent
94f0ff1ed1
commit
e4855d0143
@ -43,7 +43,6 @@ interface Props {
|
|||||||
groupsUid: string;
|
groupsUid: string;
|
||||||
mergeUid: string;
|
mergeUid: string;
|
||||||
profileUid: string;
|
profileUid: string;
|
||||||
title?: string | ReactNode;
|
|
||||||
property: string;
|
property: string;
|
||||||
open: boolean;
|
open: boolean;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
@ -232,16 +231,8 @@ const rules: {
|
|||||||
const builtinProxyPolicies = ["DIRECT", "REJECT", "REJECT-DROP", "PASS"];
|
const builtinProxyPolicies = ["DIRECT", "REJECT", "REJECT-DROP", "PASS"];
|
||||||
|
|
||||||
export const RulesEditorViewer = (props: Props) => {
|
export const RulesEditorViewer = (props: Props) => {
|
||||||
const {
|
const { groupsUid, mergeUid, profileUid, property, open, onClose, onSave } =
|
||||||
title,
|
props;
|
||||||
groupsUid,
|
|
||||||
mergeUid,
|
|
||||||
profileUid,
|
|
||||||
property,
|
|
||||||
open,
|
|
||||||
onClose,
|
|
||||||
onSave,
|
|
||||||
} = props;
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const themeMode = useThemeMode();
|
const themeMode = useThemeMode();
|
||||||
|
|
||||||
@ -302,7 +293,7 @@ export const RulesEditorViewer = (props: Props) => {
|
|||||||
};
|
};
|
||||||
const fetchContent = async () => {
|
const fetchContent = async () => {
|
||||||
let data = await readProfileFile(property);
|
let data = await readProfileFile(property);
|
||||||
let obj = yaml.load(data) as { prepend: []; append: []; delete: [] } | null;
|
let obj = yaml.load(data) as ISeqProfileConfig | null;
|
||||||
|
|
||||||
setPrependSeq(obj?.prepend || []);
|
setPrependSeq(obj?.prepend || []);
|
||||||
setAppendSeq(obj?.append || []);
|
setAppendSeq(obj?.append || []);
|
||||||
@ -316,11 +307,7 @@ export const RulesEditorViewer = (props: Props) => {
|
|||||||
if (currData === "") return;
|
if (currData === "") return;
|
||||||
if (visible !== true) return;
|
if (visible !== true) return;
|
||||||
|
|
||||||
let obj = yaml.load(currData) as {
|
let obj = yaml.load(currData) as ISeqProfileConfig | null;
|
||||||
prepend: [];
|
|
||||||
append: [];
|
|
||||||
delete: [];
|
|
||||||
} | null;
|
|
||||||
setPrependSeq(obj?.prepend || []);
|
setPrependSeq(obj?.prepend || []);
|
||||||
setAppendSeq(obj?.append || []);
|
setAppendSeq(obj?.append || []);
|
||||||
setDeleteSeq(obj?.delete || []);
|
setDeleteSeq(obj?.delete || []);
|
||||||
@ -334,18 +321,29 @@ export const RulesEditorViewer = (props: Props) => {
|
|||||||
}, [prependSeq, appendSeq, deleteSeq]);
|
}, [prependSeq, appendSeq, deleteSeq]);
|
||||||
|
|
||||||
const fetchProfile = async () => {
|
const fetchProfile = async () => {
|
||||||
let data = await readProfileFile(profileUid);
|
let data = await readProfileFile(profileUid); // 原配置文件
|
||||||
let groupsData = await readProfileFile(groupsUid);
|
let groupsData = await readProfileFile(groupsUid); // groups配置文件
|
||||||
let mergeData = await readProfileFile(mergeUid);
|
let mergeData = await readProfileFile(mergeUid); // merge配置文件
|
||||||
let globalMergeData = await readProfileFile("Merge");
|
let globalMergeData = await readProfileFile("Merge"); // global merge配置文件
|
||||||
|
|
||||||
let rulesObj = yaml.load(data) as { rules: [] } | null;
|
let rulesObj = yaml.load(data) as { rules: [] } | null;
|
||||||
|
|
||||||
let originGroupsObj = yaml.load(data) as { "proxy-groups": [] } | null;
|
let originGroupsObj = yaml.load(data) as { "proxy-groups": [] } | null;
|
||||||
let originGroups = originGroupsObj?.["proxy-groups"] || [];
|
let originGroups = originGroupsObj?.["proxy-groups"] || [];
|
||||||
let moreGroupsObj = yaml.load(groupsData) as { "proxy-groups": [] } | null;
|
let moreGroupsObj = yaml.load(groupsData) as ISeqProfileConfig | null;
|
||||||
let moreGroups = moreGroupsObj?.["proxy-groups"] || [];
|
let morePrependGroups = moreGroupsObj?.["prepend"] || [];
|
||||||
let groups = originGroups.concat(moreGroups);
|
let moreAppendGroups = moreGroupsObj?.["append"] || [];
|
||||||
|
let moreDeleteGroups =
|
||||||
|
moreGroupsObj?.["delete"] || ([] as string[] | { name: string }[]);
|
||||||
|
let groups = originGroups
|
||||||
|
.filter((group: any) => {
|
||||||
|
if (group.name) {
|
||||||
|
return !moreDeleteGroups.includes(group.name);
|
||||||
|
} else {
|
||||||
|
return !moreDeleteGroups.includes(group);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.concat(morePrependGroups, moreAppendGroups);
|
||||||
|
|
||||||
let originRuleSetObj = yaml.load(data) as { "rule-providers": {} } | null;
|
let originRuleSetObj = yaml.load(data) as { "rule-providers": {} } | null;
|
||||||
let originRuleSet = originRuleSetObj?.["rule-providers"] || {};
|
let originRuleSet = originRuleSetObj?.["rule-providers"] || {};
|
||||||
|
29
src/services/types.d.ts
vendored
29
src/services/types.d.ts
vendored
@ -199,9 +199,32 @@ interface IVergeTestItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface ISeqProfileConfig {
|
interface ISeqProfileConfig {
|
||||||
prepend: string[];
|
prepend: [];
|
||||||
append: string[];
|
append: [];
|
||||||
delete: string[];
|
delete: [];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IProxyGroupConfig {
|
||||||
|
name: string;
|
||||||
|
type: "select" | "url-test" | "fallback" | "load-balance" | "relay";
|
||||||
|
proxies?: string[];
|
||||||
|
use?: string[];
|
||||||
|
url?: string;
|
||||||
|
interval?: number;
|
||||||
|
lazy?: boolean;
|
||||||
|
timeout?: number;
|
||||||
|
"disable-udp"?: boolean;
|
||||||
|
"interface-name": string;
|
||||||
|
"routing-mark"?: number;
|
||||||
|
"include-all"?: boolean;
|
||||||
|
"include-all-proxies"?: boolean;
|
||||||
|
"include-all-providers"?: boolean;
|
||||||
|
filter?: string;
|
||||||
|
"exclude-filter"?: string;
|
||||||
|
"exclude-type"?: string;
|
||||||
|
"expected-status"?: number;
|
||||||
|
hidden?: boolean;
|
||||||
|
icon?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IVergeConfig {
|
interface IVergeConfig {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user