UNPKG

@uimkit/uikit-react

Version:

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

95 lines (90 loc) 4.01 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var React = require('react'); var index = require('../../../node_modules/.pnpm/lodash.throttle@4.1.1/node_modules/lodash.throttle/index.js'); var utils = require('./utils.js'); var UIUserItem = require('../../UIUserItem/UIUserItem.js'); 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'); var ChatStateContext = require('../../../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 = UIKitContext.useUIKit('useUserTrigger'), client = _b.client, activeProfile = _b.activeProfile; var members = ChatStateContext.useChatStateContext('useUserTrigger').members; var queryMembersThrottled = React.useCallback(index(function (query, onReady) { return tslib.__awaiter(void 0, void 0, void 0, function () { var response, users, error_1; return tslib.__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.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 = utils.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), }); }, }; }; exports.useUserTrigger = useUserTrigger; //# sourceMappingURL=useUserTrigger.js.map