@uimkit/uikit-react
Version:
<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>
91 lines (88 loc) • 3.9 kB
JavaScript
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