mirror of
https://github.com/bolucat/Archive.git
synced 2025-10-05 08:08:03 +08:00
103 lines
2.0 KiB
TypeScript
103 lines
2.0 KiB
TypeScript
import {
|
|
Clash,
|
|
ProviderItem,
|
|
ProviderRules,
|
|
clash as clashApi,
|
|
} from "@/service";
|
|
import * as tauri from "@/service/tauri";
|
|
import useSWR from "swr";
|
|
|
|
export const useClashCore = () => {
|
|
const { getGroupDelay, getProxiesDelay, ...clash } = clashApi();
|
|
|
|
const { data, isLoading, mutate } = useSWR("getProxies", tauri.getProxies);
|
|
|
|
const updateGroupDelay = async (
|
|
index: number,
|
|
options?: Clash.DelayOptions,
|
|
) => {
|
|
const group = data?.groups[index];
|
|
|
|
if (!group) {
|
|
return;
|
|
}
|
|
|
|
await getGroupDelay(group?.name, options);
|
|
|
|
await mutate();
|
|
};
|
|
|
|
const updateProxiesDelay = async (
|
|
name: string,
|
|
options?: Clash.DelayOptions,
|
|
) => {
|
|
const result = await getProxiesDelay(name, options);
|
|
|
|
await mutate();
|
|
|
|
return result;
|
|
};
|
|
|
|
const setGroupProxy = async (index: number, name: string) => {
|
|
const group = data?.groups[index];
|
|
|
|
if (!group) {
|
|
return;
|
|
}
|
|
|
|
await tauri.selectProxy(group?.name, name);
|
|
|
|
await mutate();
|
|
};
|
|
|
|
const setGlobalProxy = async (name: string) => {
|
|
const group = data?.global;
|
|
|
|
if (!group) {
|
|
return;
|
|
}
|
|
|
|
await tauri.selectProxy(group?.name, name);
|
|
|
|
await mutate();
|
|
};
|
|
|
|
const getRules = useSWR("getRules", clash.getRules);
|
|
|
|
const getRulesProviders = useSWR<{ [name: string]: ProviderRules }>(
|
|
"getRulesProviders",
|
|
clash.getRulesProviders,
|
|
);
|
|
|
|
const updateRulesProviders = async (name: string) => {
|
|
await clash.updateRulesProviders(name);
|
|
|
|
await getRulesProviders.mutate();
|
|
};
|
|
|
|
const getProxiesProviders = useSWR<{ [name: string]: ProviderItem }>(
|
|
"getProxiesProviders",
|
|
clash.getProxiesProviders,
|
|
);
|
|
|
|
const updateProxiesProviders = async (name: string) => {
|
|
await clash.updateProxiesProviders(name);
|
|
|
|
await getProxiesProviders.mutate();
|
|
};
|
|
|
|
return {
|
|
data,
|
|
isLoading,
|
|
updateGroupDelay,
|
|
updateProxiesDelay,
|
|
setGroupProxy,
|
|
setGlobalProxy,
|
|
getRules,
|
|
getRulesProviders,
|
|
updateRulesProviders,
|
|
getProxiesProviders,
|
|
updateProxiesProviders,
|
|
};
|
|
};
|