UNPKG

@uimkit/uikit-react

Version:

<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>

87 lines (82 loc) 3.75 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); require('../../../types/models.js'); require('../../../types/events.js'); require('../../../context/TranslationContext.js'); var UIKitContext = require('../../../context/UIKitContext.js'); require('../../../context/ComponentContext.js'); require('../../../context/ChatActionContext.js'); require('../../../context/MessageInputContext.js'); require('../../../context/UIMessageContext.js'); require('../../../context/ChatStateContext.js'); var React = require('react'); var constants = require('../../../constants.js'); function useGroupMemberList(groupId, query, activeMemberHandler) { var _this = this; var client = UIKitContext.useUIKit('useGroupMembers').client; var _a = React.useState(undefined), error = _a[0], setError = _a[1]; var _b = React.useState(false), hasMore = _b[0], setHasMore = _b[1]; var _c = React.useState(undefined), nextCursor = _c[0], setNextCursor = _c[1]; var _d = React.useState(undefined), members = _d[0], setMembers = _d[1]; var _e = React.useState(false), loading = _e[0], setLoading = _e[1]; var fetch = React.useCallback(function (queryType, nextCursor) { return tslib.__awaiter(_this, void 0, void 0, function () { var limit, cursor, newQuery, response, newMembers, e_1; var _a; return tslib.__generator(this, function (_b) { switch (_b.label) { case 0: _b.trys.push([0, 2, 3, 4]); setLoading(true); limit = (_a = query === null || query === void 0 ? void 0 : query.limit) !== null && _a !== void 0 ? _a : constants.MAX_QUERY_GROUP_MEMBER_LIMIT; if (queryType === 'reload') { setMembers([]); } cursor = queryType === 'reload' ? undefined : nextCursor; newQuery = tslib.__assign(tslib.__assign({}, query), { group_id: groupId, cursor: cursor, limit: limit }); return [4 /*yield*/, client.getGroupMembers(newQuery)]; case 1: response = _b.sent(); newMembers = queryType === 'reload' ? response.data : tslib.__spreadArray(tslib.__spreadArray([], members, true), response.data, true); setMembers(newMembers); setHasMore(response.extra.has_next); setNextCursor(response.extra.end_cursor); if (activeMemberHandler) { activeMemberHandler(newMembers, setMembers); } return [3 /*break*/, 4]; case 2: e_1 = _b.sent(); console.error(e_1); setError(e_1); return [3 /*break*/, 4]; case 3: setLoading(false); return [7 /*endfinally*/]; case 4: return [2 /*return*/]; } }); }); }, [client, query, groupId]); React.useEffect(function () { if (groupId) fetch('reload'); }, [fetch, groupId]); var loadMore = React.useCallback(function () { if (groupId) fetch(undefined, nextCursor); }, [fetch, groupId, nextCursor]); var reload = React.useCallback(function () { if (groupId) fetch('reload'); }, [fetch, groupId]); return { loading: loading, error: error, members: members, reload: reload, hasMore: hasMore, loadMore: loadMore, }; } exports.useGroupMemberList = useGroupMemberList; //# sourceMappingURL=useGroupMembers.js.map