UNPKG

stream-chat-react-native-core

Version:

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

47 lines 1.83 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelState = useChannelState; exports.useStateManager = useStateManager; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _ChannelsStateContext = require("./ChannelsStateContext"); function useStateManager({ cid, key, setState, state }, initialValue) { var _state$cid; var memoizedInitialValue = (0, _react.useMemo)(() => initialValue, []); var value = ((_state$cid = state[cid]) == null ? void 0 : _state$cid[key]) || memoizedInitialValue; var setValue = (0, _react.useCallback)(value => setState({ cid, key, value }), [cid, key]); return [value, setValue]; } function useChannelState(channel, threadId) { var _channel$state; var cid = (channel == null ? void 0 : channel.id) || 'id'; var _useChannelsStateCont = (0, _ChannelsStateContext.useChannelsStateContext)(), setState = _useChannelsStateCont.setState, state = _useChannelsStateCont.state; var _useStateManager = useStateManager({ cid, key: 'threadMessages', setState, state }, threadId && (channel == null || (_channel$state = channel.state) == null || (_channel$state = _channel$state.threads) == null ? void 0 : _channel$state[threadId]) || []), _useStateManager2 = (0, _slicedToArray2.default)(_useStateManager, 2), threadMessages = _useStateManager2[0], setThreadMessagesInternal = _useStateManager2[1]; var setThreadMessages = (0, _react.useCallback)(value => setThreadMessagesInternal([...value]), [setThreadMessagesInternal]); return { setThreadMessages, threadMessages }; } //# sourceMappingURL=useChannelState.js.map