/
GreyCat
/
openhuman
Обзор
Документация
Войти
/
GreyCat
/
openhuman
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
app/src/hooks/useIntelligenceSocket.ts
72 строки
2 KB
Steven Enamakel
refactor(core): move app state ownership into the Rust core (#320)
04 апр 2026, 13:20
Не верифицирован
04 апр 2026, 13:20
ef708bd
Код
Авторство
О чём код?
import { useCallback, useEffect, useRef } from 'react'; import { useCoreState } from '../providers/CoreStateProvider'; import { socketService } from '../services/socketService'; import { useAppSelector } from '../store/hooks'; import { selectSocketStatus } from '../store/socketSelectors'; export const useIntelligenceSocket = () => { const socketStatus = useAppSelector(selectSocketStatus); return { isConnected: socketStatus === 'connected', isReady: socketStatus === 'connected', sendMessage: async () => {}, sendChatInit: async () => {}, sendTyping: () => {}, }; }; export const useIntelligenceSocketManager = () => { const { snapshot } = useCoreState(); const socketStatus = useAppSelector(selectSocketStatus); const isConnected = socketStatus === 'connected'; const token = snapshot.sessionToken; const previousTokenRef = useRef<string | null>(null); const connect = useCallback( (nextToken?: string | null) => { const tokenToUse = nextToken ?? token; if (tokenToUse) { socketService.connect(tokenToUse); } }, [token] ); const disconnect = useCallback(() => { socketService.disconnect(); }, []); useEffect(() => { const previousToken = previousTokenRef.current; if (!token) { if (previousToken || isConnected) { disconnect(); } previousTokenRef.current = null; return; } if (previousToken && previousToken !== token) { disconnect(); previousTokenRef.current = token; connect(token); return; } if (!isConnected) { previousTokenRef.current = token; connect(); } }, [connect, disconnect, isConnected, token]); return { connect, disconnect, isConnected, isReady: Boolean(token) && isConnected }; }; export const useIntelligenceEvents = () => ({ onAgentResponse: () => () => {}, onExecutionProgress: () => () => {}, onExecutionComplete: () => () => {}, });