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
JavaScript
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