UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

55 lines 1.71 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useAIState = exports.AIStates = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _contexts = require("../../../contexts"); var AIStates = exports.AIStates = { Error: 'AI_STATE_ERROR', ExternalSources: 'AI_STATE_EXTERNAL_SOURCES', Generating: 'AI_STATE_GENERATING', Idle: 'AI_STATE_IDLE', Thinking: 'AI_STATE_THINKING' }; var useAIState = channel => { var _useChatContext = (0, _contexts.useChatContext)(), isOnline = _useChatContext.isOnline; var _useState = (0, _react.useState)(AIStates.Idle), _useState2 = (0, _slicedToArray2.default)(_useState, 2), aiState = _useState2[0], setAiState = _useState2[1]; (0, _react.useEffect)(() => { if (!isOnline) { setAiState(AIStates.Idle); } }, [isOnline]); (0, _react.useEffect)(() => { if (!channel) { return; } var indicatorChangedListener = channel.on('ai_indicator.update', event => { var cid = event.cid; var state = event.ai_state; if (channel.cid === cid) { setAiState(state); } }); var indicatorClearedListener = channel.on('ai_indicator.clear', event => { var cid = event.cid; if (channel.cid === cid) { setAiState(AIStates.Idle); } }); return () => { indicatorChangedListener.unsubscribe(); indicatorClearedListener.unsubscribe(); }; }, [channel]); return { aiState }; }; exports.useAIState = useAIState; //# sourceMappingURL=useAIState.js.map