UNPKG

@uimkit/uikit-react

Version:

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

91 lines (88 loc) 3.9 kB
import { __awaiter, __generator } from 'tslib'; import { useCallback } from 'react'; import lodash_throttle from '../../../node_modules/.pnpm/lodash.throttle@4.1.1/node_modules/lodash.throttle/index.js'; import { searchLocalUsers } from './utils.js'; import { UIUserItem } from '../../UIUserItem/UIUserItem.js'; 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 { useChatStateContext } from '../../../context/ChatStateContext.js'; var useUserTrigger = function (params) { var disableMentions = params.disableMentions, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? { limit: 10 } : _a, onSelectUser = params.onSelectUser; var _b = useUIKit('useUserTrigger'), client = _b.client, activeProfile = _b.activeProfile; var members = useChatStateContext('useUserTrigger').members; var queryMembersThrottled = useCallback(lodash_throttle(function (query, onReady) { return __awaiter(void 0, void 0, void 0, function () { var response, users, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, client.getGroupMembers({ name: { $autocomplete: query }, })]; case 1: response = _a.sent(); users = response.data.map(function (member) { return member; }); if (onReady && users.length) { onReady(users); } else { onReady([]); } return [3 /*break*/, 3]; case 2: error_1 = _a.sent(); console.log({ error: error_1 }); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); }, 200), [client]); return { callback: function (item) { return onSelectUser(item); }, component: UIUserItem, dataProvider: function (query, text, onReady) { var _a; if (disableMentions) return; /** * 如果没有指定查询条件, 优先读取本地的成员列表. */ if (!query || members.length < 100) { var users = members; var params_1 = { ownUserId: activeProfile.id, query: query, text: text, users: users, }; var matchingUsers = searchLocalUsers(params_1); var usersToShow = (_a = mentionQueryParams === null || mentionQueryParams === void 0 ? void 0 : mentionQueryParams.limit) !== null && _a !== void 0 ? _a : 10; var data = matchingUsers.slice(0, usersToShow); if (onReady) onReady(data, query); return data; } // 查询云端的 return queryMembersThrottled(query, function (data) { if (onReady) onReady(data, query); }); }, output: function (entity) { var _a; return ({ caretPosition: 'next', key: entity.id, text: "@".concat((_a = entity.name) !== null && _a !== void 0 ? _a : entity.id), }); }, }; }; export { useUserTrigger }; //# sourceMappingURL=useUserTrigger.js.map