UNPKG

@uimkit/uikit-react

Version:

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

81 lines (78 loc) 3.46 kB
import { __awaiter, __generator, __spreadArray, __assign } from 'tslib'; import '../../../types/models.js'; import '../../../types/events.js'; import '../../../context/TranslationContext.js'; import { useUIKit } from '../../../context/UIKitContext.js'; import '../../../context/ComponentContext.js'; import '../../../context/ChatActionContext.js'; import '../../../context/MessageInputContext.js'; import '../../../context/UIMessageContext.js'; import '../../../context/ChatStateContext.js'; import { useState, useCallback, useEffect } from 'react'; function useGroupList(accountId, query, activeGroupHandler) { var _this = this; var client = useUIKit('useGroupList').client; var _a = useState(undefined), error = _a[0], setError = _a[1]; var _b = useState(false), hasMore = _b[0], setHasMore = _b[1]; var _c = useState(undefined), nextCursor = _c[0], setNextCursor = _c[1]; var _d = useState(undefined), groups = _d[0], setGroups = _d[1]; var _e = useState(false), loading = _e[0], setLoading = _e[1]; var fetch = useCallback(function (queryType, nextCursor) { return __awaiter(_this, void 0, void 0, function () { var limit, cursor, newQuery, response, newGroups, e_1; var _a; return __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 : 50; if (queryType === 'reload') { setGroups([]); } cursor = queryType === 'reload' ? undefined : nextCursor; newQuery = __assign(__assign({}, query), { account_id: accountId, cursor: cursor, limit: limit }); return [4 /*yield*/, client.getGroupList(newQuery)]; case 1: response = _b.sent(); newGroups = queryType === 'reload' ? response.data : __spreadArray(__spreadArray([], groups, true), response.data, true); setGroups(newGroups); setHasMore(response.extra.has_next); setNextCursor(response.extra.end_cursor); if (activeGroupHandler) { activeGroupHandler(newGroups, setGroups); } return [3 /*break*/, 4]; case 2: e_1 = _b.sent(); setError(e_1); return [3 /*break*/, 4]; case 3: setLoading(false); return [7 /*endfinally*/]; case 4: return [2 /*return*/]; } }); }); }, [client, query, accountId]); useEffect(function () { if (accountId) fetch('reload'); }, [fetch, accountId]); var loadMore = useCallback(function () { if (accountId) fetch(undefined, nextCursor); }, [fetch, accountId, nextCursor]); var reload = useCallback(function () { if (accountId) fetch('reload'); }, [fetch, accountId]); return { loading: loading, error: error, groups: groups, reload: reload, hasMore: hasMore, loadMore: loadMore, }; } export { useGroupList }; //# sourceMappingURL=useGroupList.js.map