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