UNPKG

stream-chat-react-native-core

Version:

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

187 lines 5.08 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelMessageDataState = exports.useChannelDataState = exports.channelInitialState = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var channelInitialState = exports.channelInitialState = { hasMore: true, hasMoreNewer: false, loading: false, loadingMore: false, loadingMoreRecent: false, members: {}, messages: [], pinnedMessages: [], read: {}, targetedMessageId: undefined, typing: {}, watcherCount: 0, watchers: {} }; var useChannelMessageDataState = channel => { var _channel$state, _channel$state2; var _useState = (0, _react.useState)({ hasMore: true, hasMoreNewer: false, loading: false, loadingMore: false, loadingMoreRecent: false, messages: (channel == null || (_channel$state = channel.state) == null ? void 0 : _channel$state.messages) || [], pinnedMessages: (channel == null || (_channel$state2 = channel.state) == null ? void 0 : _channel$state2.pinnedMessages) || [], targetedMessageId: undefined }), _useState2 = (0, _slicedToArray2.default)(_useState, 2), state = _useState2[0], setState = _useState2[1]; var copyMessagesStateFromChannel = (0, _react.useCallback)(channel => { setState(prev => ({ ...prev, messages: [...channel.state.messages], pinnedMessages: [...channel.state.pinnedMessages] })); }, []); var loadInitialMessagesStateFromChannel = (0, _react.useCallback)((channel, hasMore) => { setState(prev => ({ ...prev, hasMore, loading: false, messages: [...channel.state.messages], pinnedMessages: [...channel.state.pinnedMessages] })); }, []); var jumpToLatestMessage = (0, _react.useCallback)(() => { setState(prev => ({ ...prev, hasMoreNewer: false, loading: false, targetedMessageId: undefined })); }, []); var jumpToMessageFinished = (0, _react.useCallback)((hasMoreNewer, targetedMessageId) => { setState(prev => ({ ...prev, hasMoreNewer, loading: false, targetedMessageId })); }, []); var loadMoreFinished = (0, _react.useCallback)((hasMore, messages) => { setState(prev => ({ ...prev, hasMore, loadingMore: false, messages })); }, []); var setLoadingMore = (0, _react.useCallback)(loadingMore => { setState(prev => ({ ...prev, loadingMore })); }, []); var setLoadingMoreRecent = (0, _react.useCallback)(loadingMoreRecent => { setState(prev => ({ ...prev, loadingMoreRecent })); }, []); var setLoading = (0, _react.useCallback)(loading => { setState(prev => ({ ...prev, loading })); }, []); var loadMoreRecentFinished = (0, _react.useCallback)((hasMoreNewer, messages) => { setState(prev => ({ ...prev, hasMoreNewer, loadingMoreRecent: false, messages })); }, []); return { copyMessagesStateFromChannel, jumpToLatestMessage, jumpToMessageFinished, loadInitialMessagesStateFromChannel, loadMoreFinished, loadMoreRecentFinished, setLoading, setLoadingMore, setLoadingMoreRecent, state }; }; exports.useChannelMessageDataState = useChannelMessageDataState; var useChannelDataState = channel => { var _useState3 = (0, _react.useState)({ members: channel.state.members, read: channel.state.read, typing: {}, watcherCount: 0, watchers: {} }), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), state = _useState4[0], setState = _useState4[1]; var initStateFromChannel = (0, _react.useCallback)(channel => { setState({ ...state, members: { ...channel.state.members }, read: { ...channel.state.read }, typing: { ...channel.state.typing }, watcherCount: channel.state.watcher_count, watchers: { ...channel.state.watchers } }); }, [state]); var copyStateFromChannel = (0, _react.useCallback)(channel => { setState(prev => ({ ...prev, members: { ...channel.state.members }, read: { ...channel.state.read }, watcherCount: channel.state.watcher_count, watchers: { ...channel.state.watchers } })); }, []); var setRead = (0, _react.useCallback)(channel => { setState(prev => ({ ...prev, read: { ...channel.state.read } })); }, []); var setTyping = (0, _react.useCallback)(channel => { setState(prev => ({ ...prev, typing: { ...channel.state.typing } })); }, []); return { copyStateFromChannel, initStateFromChannel, setRead, setTyping, state }; }; exports.useChannelDataState = useChannelDataState; //# sourceMappingURL=useChannelDataState.js.map