UNPKG

@gathertown/uikit-react-native

Version:

Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

67 lines 2.93 kB
import React from 'react'; import { useGroupChannelList } from '@gathertown/uikit-chat-hooks'; import { PASS, useAppState, useFreshCallback } from '@gathertown/uikit-utils'; import StatusComposition from '../components/StatusComposition'; import GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer'; import createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule'; import { useSendbirdChat } from '../hooks/useContext'; const createGroupChannelListFragment = initModule => { const GroupChannelListModule = createGroupChannelListModule(initModule); return _ref => { let { onPressChannel, onPressCreateChannel, collectionCreator, renderGroupChannelPreview, skipTypeSelection = false, flatListProps = {}, menuItemCreator = PASS } = _ref; const { sdk, currentUser, sbOptions, markAsDeliveredWithChannel } = useSendbirdChat(); const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId, { collectionCreator, enableCollectionWithoutLocalCache: true }); if (sbOptions.appInfo.deliveryReceiptEnabled) { useAppState('change', status => { if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel); }); } const _renderGroupChannelPreview = useFreshCallback(props => { if (renderGroupChannelPreview) return renderGroupChannelPreview(props); return /*#__PURE__*/React.createElement(GroupChannelPreviewContainer, props); }); const isChannelTypeAvailable = sbOptions.appInfo.broadcastChannelEnabled || sbOptions.appInfo.superGroupChannelEnabled; return /*#__PURE__*/React.createElement(GroupChannelListModule.Provider, null, /*#__PURE__*/React.createElement(GroupChannelListModule.Header, null), /*#__PURE__*/React.createElement(StatusComposition, { loading: loading, LoadingComponent: /*#__PURE__*/React.createElement(GroupChannelListModule.StatusLoading, null) }, /*#__PURE__*/React.createElement(GroupChannelListModule.List, { onPressChannel: onPressChannel, menuItemCreator: menuItemCreator, renderGroupChannelPreview: _renderGroupChannelPreview, groupChannels: groupChannels, onLoadNext: next, flatListProps: { ListEmptyComponent: /*#__PURE__*/React.createElement(GroupChannelListModule.StatusEmpty, null), contentContainerStyle: { flexGrow: 1 }, ...flatListProps } })), /*#__PURE__*/React.createElement(GroupChannelListModule.TypeSelector, { skipTypeSelection: isChannelTypeAvailable ? skipTypeSelection : true, onSelectType: onPressCreateChannel })); }; }; export default createGroupChannelListFragment; //# sourceMappingURL=createGroupChannelListFragment.js.map