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