stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
45 lines • 1.6 kB
JavaScript
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 memoizedInitialValue = (0, _react.useMemo)(() => initialValue, []);
var value = state[cid]?.[key] || memoizedInitialValue;
var setValue = (0, _react.useCallback)(value => setState({
cid,
key,
value
}), [cid, key]);
return [value, setValue];
}
function useChannelState(channel, threadId) {
var cid = channel?.id || 'id';
var _useChannelsStateCont = (0, _ChannelsStateContext.useChannelsStateContext)(),
setState = _useChannelsStateCont.setState,
state = _useChannelsStateCont.state;
var _useStateManager = useStateManager({
cid,
key: 'threadMessages',
setState,
state
}, threadId && channel?.state?.threads?.[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