feat: support sort proxy node and custom test url
This commit is contained in:
38
src/components/proxy/use-sort-proxy.ts
Normal file
38
src/components/proxy/use-sort-proxy.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { useMemo } from "react";
|
||||
import { ApiType } from "../../services/types";
|
||||
import delayManager from "../../services/delay";
|
||||
|
||||
// default | delay | alpha
|
||||
export type ProxySortType = 0 | 1 | 2;
|
||||
|
||||
/**
|
||||
* sort the proxy
|
||||
*/
|
||||
export default function useSortProxy(
|
||||
proxies: ApiType.ProxyItem[],
|
||||
groupName: string,
|
||||
sortType: ProxySortType
|
||||
) {
|
||||
return useMemo(() => {
|
||||
if (!proxies) return [];
|
||||
if (sortType === 0) return proxies;
|
||||
|
||||
const list = proxies.slice();
|
||||
|
||||
if (sortType === 1) {
|
||||
list.sort((a, b) => {
|
||||
const ad = delayManager.getDelay(a.name, groupName);
|
||||
const bd = delayManager.getDelay(b.name, groupName);
|
||||
|
||||
if (ad === -1) return 1;
|
||||
if (bd === -1) return -1;
|
||||
|
||||
return ad - bd;
|
||||
});
|
||||
} else {
|
||||
list.sort((a, b) => a.name.localeCompare(b.name));
|
||||
}
|
||||
|
||||
return list;
|
||||
}, [proxies, groupName, sortType]);
|
||||
}
|
||||
Reference in New Issue
Block a user