@memori.ai/memori-react
Version:
[](https://www.npmjs.com/package/@memori.ai/memori-react)  ;
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