import { MihomoWebSocket } from 'tauri-plugin-mihomo-api' import { useMihomoWsSubscription } from './use-mihomo-ws-subscription' export interface IMemoryUsageItem { inuse: number oslimit?: number } const FALLBACK_MEMORY_USAGE: IMemoryUsageItem = { inuse: 0 } export const useMemoryData = () => { const { response, refresh } = useMihomoWsSubscription({ storageKey: 'mihomo_memory_date', buildSubscriptKey: (date) => `getClashMemory-${date}`, fallbackData: FALLBACK_MEMORY_USAGE, connect: () => MihomoWebSocket.connect_memory(), setupHandlers: ({ next, scheduleReconnect }) => ({ handleMessage: (data) => { if (data.startsWith('Websocket error')) { next(data, FALLBACK_MEMORY_USAGE) void scheduleReconnect() return } try { const parsed = JSON.parse(data) as IMemoryUsageItem next(null, parsed) } catch (error) { next(error, FALLBACK_MEMORY_USAGE) } }, }), }) return { response, refreshGetClashMemory: refresh } }