import { createContext, use } from "react"; import { BaseConfig, ProxyProvider, Rule, RuleProvider, } from "tauri-plugin-mihomo-api"; export interface AppDataContextType { proxies: any; clashConfig: BaseConfig; rules: Rule[]; sysproxy: any; runningMode?: string; uptime: number; proxyProviders: Record; ruleProviders: Record; systemProxyAddress: string; refreshProxy: () => Promise; refreshClashConfig: () => Promise; refreshRules: () => Promise; refreshSysproxy: () => Promise; refreshProxyProviders: () => Promise; refreshRuleProviders: () => Promise; refreshAll: () => Promise; } export interface ConnectionWithSpeed extends IConnectionsItem { curUpload: number; curDownload: number; } export interface ConnectionSpeedData { id: string; upload: number; download: number; timestamp: number; } export const AppDataContext = createContext(null); export const useAppData = () => { const context = use(AppDataContext); if (!context) { throw new Error("useAppData必须在AppDataProvider内使用"); } return context; };