UNPKG

@memori.ai/memori-react

Version:

[![npm version](https://img.shields.io/github/package-json/v/memori-ai/memori-react)](https://www.npmjs.com/package/@memori.ai/memori-react) ![Tests](https://github.com/memori-ai/memori-react/workflows/CI/badge.svg?branch=main) ![TypeScript Support](https

76 lines 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useNats = void 0; const react_1 = require("react"); const getNatsConfig_1 = require("./getNatsConfig"); const useNatsSession_1 = require("./useNatsSession"); function useNats({ baseUrl, sessionId, onProgress, onDialogResponse, onError, }) { const [config, setConfig] = (0, react_1.useState)(null); const [configError, setConfigError] = (0, react_1.useState)(null); const onProgressRef = (0, react_1.useRef)(onProgress); const onDialogResponseRef = (0, react_1.useRef)(onDialogResponse); const onErrorRef = (0, react_1.useRef)(onError); (0, react_1.useEffect)(() => { onProgressRef.current = onProgress; onDialogResponseRef.current = onDialogResponse; onErrorRef.current = onError; }, [onProgress, onDialogResponse, onError]); (0, react_1.useEffect)(() => { if (!sessionId) { console.debug('[NATS] no sessionId, skipping config fetch'); setConfig(null); setConfigError(null); return; } const controller = new AbortController(); let cancelled = false; console.info('[NATS] fetching config from', `${baseUrl}/api/nats`, 'for session', sessionId); (0, getNatsConfig_1.getNatsConfig)(baseUrl, sessionId, controller.signal) .then(cfg => { if (!cancelled) { console.info('[NATS] config received', { url: cfg.url, jetStream: !!cfg.stream, stream: cfg.stream, }); setConfig(cfg); setConfigError(null); } }) .catch(err => { if (!cancelled && (err === null || err === void 0 ? void 0 : err.name) !== 'AbortError') { console.error('[NATS] config error', err); setConfig(null); setConfigError(err instanceof Error ? err : new Error(String(err))); } }); return () => { cancelled = true; controller.abort(); }; }, [baseUrl, sessionId]); const handleMessage = (0, react_1.useCallback)((event) => { var _a, _b, _c; console.debug('[NATS] dispatching event', { eventType: event.eventType }); switch (event.eventType) { case 'progress': (_a = onProgressRef.current) === null || _a === void 0 ? void 0 : _a.call(onProgressRef, event); break; case 'dialog_text_entered_response': (_b = onDialogResponseRef.current) === null || _b === void 0 ? void 0 : _b.call(onDialogResponseRef, event); break; case 'error': (_c = onErrorRef.current) === null || _c === void 0 ? void 0 : _c.call(onErrorRef, event); break; default: console.warn('Unknown NATS event', event); } }, []); (0, useNatsSession_1.useNatsSession)(sessionId, config !== null && config !== void 0 ? config : undefined, handleMessage); return { connected: !!config, configError, }; } exports.useNats = useNats; //# sourceMappingURL=useNats.js.map