feat: optimize the proxy group order
This commit is contained in:
parent
e737bb4cea
commit
433716cf33
@ -12,35 +12,39 @@ export interface ProxyItem {
|
|||||||
now?: string;
|
now?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ProxyGroupItem = Omit<ProxyItem, "all" | "now"> & {
|
export type ProxyGroupItem = Omit<ProxyItem, "all"> & {
|
||||||
all?: ProxyItem[];
|
all: ProxyItem[];
|
||||||
now?: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Get the Proxy infomation
|
/// Get the Proxy infomation
|
||||||
export async function getProxyInfo() {
|
export async function getProxyInfo() {
|
||||||
const response = (await axiosIns.get("/proxies")) as any;
|
const response = (await axiosIns.get("/proxies")) as any;
|
||||||
const results = (response?.proxies ?? {}) as Record<string, ProxyItem>;
|
const proxies = (response?.proxies ?? {}) as Record<string, ProxyItem>;
|
||||||
|
|
||||||
const global = results["GLOBAL"] || results["global"];
|
const global = proxies["GLOBAL"];
|
||||||
const proxies = Object.values(results).filter((each) => each.all == null);
|
const order = global?.all;
|
||||||
|
|
||||||
const groups = Object.values(results).filter(
|
let groups: ProxyGroupItem[] = [];
|
||||||
(each) => each.name.toLocaleUpperCase() !== "GLOBAL" && each.all != null
|
|
||||||
) as ProxyGroupItem[];
|
|
||||||
|
|
||||||
groups.forEach((each) => {
|
|
||||||
// @ts-ignore
|
|
||||||
each.all = each.all?.map((item) => results[item]).filter((e) => e);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
if (order) {
|
||||||
|
groups = order
|
||||||
|
.filter((name) => proxies[name]?.all)
|
||||||
|
.map((name) => proxies[name])
|
||||||
|
.map((each) => ({
|
||||||
|
...each,
|
||||||
|
all: each.all!.map((item) => proxies[item]),
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
groups = Object.values(proxies)
|
||||||
|
.filter((each) => each.name !== "GLOBAL" && each.all)
|
||||||
|
.map((each) => ({
|
||||||
|
...each,
|
||||||
|
all: each.all!.map((item) => proxies[item]),
|
||||||
|
}));
|
||||||
groups.sort((a, b) => b.name.localeCompare(a.name));
|
groups.sort((a, b) => b.name.localeCompare(a.name));
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return { global, groups, proxies };
|
||||||
global,
|
|
||||||
groups,
|
|
||||||
proxies,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Update the Proxy Choose
|
/// Update the Proxy Choose
|
||||||
|
Loading…
x
Reference in New Issue
Block a user