@sendbird/uikit-react-native
Version:
Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
87 lines (86 loc) • 3.88 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _groupChannel = require("@sendbird/chat/groupChannel");
var _uikitTools = require("@sendbird/uikit-tools");
var _uikitUtils = require("@sendbird/uikit-utils");
var _StatusComposition = _interopRequireDefault(require("../components/StatusComposition"));
var _GroupChannelPreviewContainer = _interopRequireDefault(require("../containers/GroupChannelPreviewContainer"));
var _createGroupChannelListModule = _interopRequireDefault(require("../domain/groupChannelList/module/createGroupChannelListModule"));
var _useContext = require("../hooks/useContext");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const createGroupChannelListFragment = initModule => {
const GroupChannelListModule = (0, _createGroupChannelListModule.default)(initModule);
return ({
onPressChannel,
onPressCreateChannel,
renderGroupChannelPreview,
skipTypeSelection = false,
flatListProps = {},
menuItemCreator = _uikitUtils.PASS,
channelListQueryParams,
collectionCreator
}) => {
const {
sdk,
sbOptions,
markAsDeliveredWithChannel
} = (0, _useContext.useSendbirdChat)();
const {
groupChannels,
loadMore,
initialized
} = (0, _uikitTools.useGroupChannelList)(sdk, {
collectionCreator: getCollectionCreator(sdk, channelListQueryParams, collectionCreator),
markAsDelivered: _uikitUtils.confirmAndMarkAsDelivered
});
(0, _uikitUtils.useAppState)('change', status => {
if (sbOptions.appInfo.deliveryReceiptEnabled) {
if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);
}
});
const _renderGroupChannelPreview = (0, _uikitUtils.useFreshCallback)(props => {
if (renderGroupChannelPreview) return renderGroupChannelPreview(props);
return /*#__PURE__*/_react.default.createElement(_GroupChannelPreviewContainer.default, props);
});
const isChannelTypeAvailable = sbOptions.appInfo.broadcastChannelEnabled || sbOptions.appInfo.superGroupChannelEnabled;
return /*#__PURE__*/_react.default.createElement(GroupChannelListModule.Provider, null, /*#__PURE__*/_react.default.createElement(GroupChannelListModule.Header, null), /*#__PURE__*/_react.default.createElement(_StatusComposition.default, {
loading: !initialized,
LoadingComponent: /*#__PURE__*/_react.default.createElement(GroupChannelListModule.StatusLoading, null)
}, /*#__PURE__*/_react.default.createElement(GroupChannelListModule.List, {
onPressChannel: onPressChannel,
menuItemCreator: menuItemCreator,
renderGroupChannelPreview: _renderGroupChannelPreview,
groupChannels: groupChannels,
onLoadNext: loadMore,
flatListProps: {
ListEmptyComponent: /*#__PURE__*/_react.default.createElement(GroupChannelListModule.StatusEmpty, null),
contentContainerStyle: {
flexGrow: 1
},
...flatListProps
}
})), /*#__PURE__*/_react.default.createElement(GroupChannelListModule.TypeSelector, {
skipTypeSelection: isChannelTypeAvailable ? skipTypeSelection : true,
onSelectType: onPressCreateChannel
}));
};
};
function getCollectionCreator(sdk, channelListQueryParams, deprecatedCreatorProp) {
if (!channelListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;
return defaultParams => {
const params = {
...defaultParams,
...channelListQueryParams
};
return sdk.groupChannel.createGroupChannelCollection({
...params,
filter: new _groupChannel.GroupChannelFilter(params)
});
};
}
var _default = exports.default = createGroupChannelListFragment;
//# sourceMappingURL=createGroupChannelListFragment.js.map