@uimkit/uikit-react
Version:
<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>
83 lines (80 loc) • 3.61 kB
JavaScript
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';
import { MAX_QUERY_GROUP_MEMBER_LIMIT } from '../../../constants.js';
function useGroupMemberList(groupId, query, activeMemberHandler) {
var _this = this;
var client = useUIKit('useGroupMembers').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), members = _d[0], setMembers = _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, newMembers, 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 : MAX_QUERY_GROUP_MEMBER_LIMIT;
if (queryType === 'reload') {
setMembers([]);
}
cursor = queryType === 'reload' ? undefined : nextCursor;
newQuery = __assign(__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 : __spreadArray(__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]);
useEffect(function () {
if (groupId)
fetch('reload');
}, [fetch, groupId]);
var loadMore = useCallback(function () {
if (groupId)
fetch(undefined, nextCursor);
}, [fetch, groupId, nextCursor]);
var reload = useCallback(function () {
if (groupId)
fetch('reload');
}, [fetch, groupId]);
return {
loading: loading,
error: error,
members: members,
reload: reload,
hasMore: hasMore,
loadMore: loadMore,
};
}
export { useGroupMemberList };
//# sourceMappingURL=useGroupMembers.js.map