matrix-react-sdk
Version:
SDK for matrix.org using React
71 lines (67 loc) • 8.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.usersTyping = usersTyping;
exports.usersTypingApartFromMe = usersTypingApartFromMe;
exports.usersTypingApartFromMeAndIgnored = usersTypingApartFromMeAndIgnored;
exports.whoIsTypingString = whoIsTypingString;
var _languageHandler = require("./languageHandler");
/*
Copyright 2024 New Vector Ltd.
Copyright 2017 Vector Creations Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
function usersTypingApartFromMeAndIgnored(room) {
return usersTyping(room, [room.client.getSafeUserId()].concat(room.client.getIgnoredUsers()));
}
function usersTypingApartFromMe(room) {
return usersTyping(room, [room.client.getSafeUserId()]);
}
/**
* Given a Room object and, optionally, a list of userID strings
* to exclude, return a list of user objects who are typing.
* @param {Room} room: room object to get users from.
* @param {string[]} exclude: list of user mxids to exclude.
* @returns {RoomMember[]} list of user objects who are typing.
*/
function usersTyping(room, exclude = []) {
const whoIsTyping = [];
const memberKeys = Object.keys(room.currentState.members);
for (const userId of memberKeys) {
if (room.currentState.members[userId].typing) {
if (exclude.indexOf(userId) === -1) {
whoIsTyping.push(room.currentState.members[userId]);
}
}
}
return whoIsTyping;
}
function whoIsTypingString(whoIsTyping, limit) {
let othersCount = 0;
if (whoIsTyping.length > limit) {
othersCount = whoIsTyping.length - limit + 1;
}
if (whoIsTyping.length === 0) {
return "";
} else if (whoIsTyping.length === 1) {
return (0, _languageHandler._t)("timeline|typing_indicator|one_user", {
displayName: whoIsTyping[0].name
});
}
const names = whoIsTyping.map(m => m.name);
if (othersCount >= 1) {
return (0, _languageHandler._t)("timeline|typing_indicator|more_users", {
names: names.slice(0, limit - 1).join(", "),
count: othersCount
});
} else {
const lastPerson = names.pop();
return (0, _languageHandler._t)("timeline|typing_indicator|two_users", {
names: names.join(", "),
lastPerson: lastPerson
});
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGFuZ3VhZ2VIYW5kbGVyIiwicmVxdWlyZSIsInVzZXJzVHlwaW5nQXBhcnRGcm9tTWVBbmRJZ25vcmVkIiwicm9vbSIsInVzZXJzVHlwaW5nIiwiY2xpZW50IiwiZ2V0U2FmZVVzZXJJZCIsImNvbmNhdCIsImdldElnbm9yZWRVc2VycyIsInVzZXJzVHlwaW5nQXBhcnRGcm9tTWUiLCJleGNsdWRlIiwid2hvSXNUeXBpbmciLCJtZW1iZXJLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImN1cnJlbnRTdGF0ZSIsIm1lbWJlcnMiLCJ1c2VySWQiLCJ0eXBpbmciLCJpbmRleE9mIiwicHVzaCIsIndob0lzVHlwaW5nU3RyaW5nIiwibGltaXQiLCJvdGhlcnNDb3VudCIsImxlbmd0aCIsIl90IiwiZGlzcGxheU5hbWUiLCJuYW1lIiwibmFtZXMiLCJtYXAiLCJtIiwic2xpY2UiLCJqb2luIiwiY291bnQiLCJsYXN0UGVyc29uIiwicG9wIl0sInNvdXJjZXMiOlsiLi4vc3JjL1dob0lzVHlwaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IFJvb20sIFJvb21NZW1iZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2Vyc1R5cGluZ0FwYXJ0RnJvbU1lQW5kSWdub3JlZChyb29tOiBSb29tKTogUm9vbU1lbWJlcltdIHtcbiAgICByZXR1cm4gdXNlcnNUeXBpbmcocm9vbSwgW3Jvb20uY2xpZW50LmdldFNhZmVVc2VySWQoKV0uY29uY2F0KHJvb20uY2xpZW50LmdldElnbm9yZWRVc2VycygpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2Vyc1R5cGluZ0FwYXJ0RnJvbU1lKHJvb206IFJvb20pOiBSb29tTWVtYmVyW10ge1xuICAgIHJldHVybiB1c2Vyc1R5cGluZyhyb29tLCBbcm9vbS5jbGllbnQuZ2V0U2FmZVVzZXJJZCgpXSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBSb29tIG9iamVjdCBhbmQsIG9wdGlvbmFsbHksIGEgbGlzdCBvZiB1c2VySUQgc3RyaW5nc1xuICogdG8gZXhjbHVkZSwgcmV0dXJuIGEgbGlzdCBvZiB1c2VyIG9iamVjdHMgd2hvIGFyZSB0eXBpbmcuXG4gKiBAcGFyYW0ge1Jvb219IHJvb206IHJvb20gb2JqZWN0IHRvIGdldCB1c2VycyBmcm9tLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gZXhjbHVkZTogbGlzdCBvZiB1c2VyIG14aWRzIHRvIGV4Y2x1ZGUuXG4gKiBAcmV0dXJucyB7Um9vbU1lbWJlcltdfSBsaXN0IG9mIHVzZXIgb2JqZWN0cyB3aG8gYXJlIHR5cGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZXJzVHlwaW5nKHJvb206IFJvb20sIGV4Y2x1ZGU6IHN0cmluZ1tdID0gW10pOiBSb29tTWVtYmVyW10ge1xuICAgIGNvbnN0IHdob0lzVHlwaW5nOiBSb29tTWVtYmVyW10gPSBbXTtcblxuICAgIGNvbnN0IG1lbWJlcktleXMgPSBPYmplY3Qua2V5cyhyb29tLmN1cnJlbnRTdGF0ZS5tZW1iZXJzKTtcbiAgICBmb3IgKGNvbnN0IHVzZXJJZCBvZiBtZW1iZXJLZXlzKSB7XG4gICAgICAgIGlmIChyb29tLmN1cnJlbnRTdGF0ZS5tZW1iZXJzW3VzZXJJZF0udHlwaW5nKSB7XG4gICAgICAgICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHVzZXJJZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgd2hvSXNUeXBpbmcucHVzaChyb29tLmN1cnJlbnRTdGF0ZS5tZW1iZXJzW3VzZXJJZF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdob0lzVHlwaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2hvSXNUeXBpbmdTdHJpbmcod2hvSXNUeXBpbmc6IFJvb21NZW1iZXJbXSwgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IG90aGVyc0NvdW50ID0gMDtcbiAgICBpZiAod2hvSXNUeXBpbmcubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgICAgb3RoZXJzQ291bnQgPSB3aG9Jc1R5cGluZy5sZW5ndGggLSBsaW1pdCArIDE7XG4gICAgfVxuXG4gICAgaWYgKHdob0lzVHlwaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9IGVsc2UgaWYgKHdob0lzVHlwaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gX3QoXCJ0aW1lbGluZXx0eXBpbmdfaW5kaWNhdG9yfG9uZV91c2VyXCIsIHsgZGlzcGxheU5hbWU6IHdob0lzVHlwaW5nWzBdLm5hbWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXMgPSB3aG9Jc1R5cGluZy5tYXAoKG0pID0+IG0ubmFtZSk7XG5cbiAgICBpZiAob3RoZXJzQ291bnQgPj0gMSkge1xuICAgICAgICByZXR1cm4gX3QoXCJ0aW1lbGluZXx0eXBpbmdfaW5kaWNhdG9yfG1vcmVfdXNlcnNcIiwge1xuICAgICAgICAgICAgbmFtZXM6IG5hbWVzLnNsaWNlKDAsIGxpbWl0IC0gMSkuam9pbihcIiwgXCIpLFxuICAgICAgICAgICAgY291bnQ6IG90aGVyc0NvdW50LFxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsYXN0UGVyc29uID0gbmFtZXMucG9wKCk7XG4gICAgICAgIHJldHVybiBfdChcInRpbWVsaW5lfHR5cGluZ19pbmRpY2F0b3J8dHdvX3VzZXJzXCIsIHsgbmFtZXM6IG5hbWVzLmpvaW4oXCIsIFwiKSwgbGFzdFBlcnNvbjogbGFzdFBlcnNvbiB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLElBQUFBLGdCQUFBLEdBQUFDLE9BQUE7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNTyxTQUFTQyxnQ0FBZ0NBLENBQUNDLElBQVUsRUFBZ0I7RUFDdkUsT0FBT0MsV0FBVyxDQUFDRCxJQUFJLEVBQUUsQ0FBQ0EsSUFBSSxDQUFDRSxNQUFNLENBQUNDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxDQUFDSixJQUFJLENBQUNFLE1BQU0sQ0FBQ0csZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pHO0FBRU8sU0FBU0Msc0JBQXNCQSxDQUFDTixJQUFVLEVBQWdCO0VBQzdELE9BQU9DLFdBQVcsQ0FBQ0QsSUFBSSxFQUFFLENBQUNBLElBQUksQ0FBQ0UsTUFBTSxDQUFDQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRixXQUFXQSxDQUFDRCxJQUFVLEVBQUVPLE9BQWlCLEdBQUcsRUFBRSxFQUFnQjtFQUMxRSxNQUFNQyxXQUF5QixHQUFHLEVBQUU7RUFFcEMsTUFBTUMsVUFBVSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ1gsSUFBSSxDQUFDWSxZQUFZLENBQUNDLE9BQU8sQ0FBQztFQUN6RCxLQUFLLE1BQU1DLE1BQU0sSUFBSUwsVUFBVSxFQUFFO0lBQzdCLElBQUlULElBQUksQ0FBQ1ksWUFBWSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxNQUFNLEVBQUU7TUFDMUMsSUFBSVIsT0FBTyxDQUFDUyxPQUFPLENBQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2hDTixXQUFXLENBQUNTLElBQUksQ0FBQ2pCLElBQUksQ0FBQ1ksWUFBWSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO01BQ3ZEO0lBQ0o7RUFDSjtFQUVBLE9BQU9OLFdBQVc7QUFDdEI7QUFFTyxTQUFTVSxpQkFBaUJBLENBQUNWLFdBQXlCLEVBQUVXLEtBQWEsRUFBVTtFQUNoRixJQUFJQyxXQUFXLEdBQUcsQ0FBQztFQUNuQixJQUFJWixXQUFXLENBQUNhLE1BQU0sR0FBR0YsS0FBSyxFQUFFO0lBQzVCQyxXQUFXLEdBQUdaLFdBQVcsQ0FBQ2EsTUFBTSxHQUFHRixLQUFLLEdBQUcsQ0FBQztFQUNoRDtFQUVBLElBQUlYLFdBQVcsQ0FBQ2EsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUMxQixPQUFPLEVBQUU7RUFDYixDQUFDLE1BQU0sSUFBSWIsV0FBVyxDQUFDYSxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQ2pDLE9BQU8sSUFBQUMsbUJBQUUsRUFBQyxvQ0FBb0MsRUFBRTtNQUFFQyxXQUFXLEVBQUVmLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ2dCO0lBQUssQ0FBQyxDQUFDO0VBQ3pGO0VBRUEsTUFBTUMsS0FBSyxHQUFHakIsV0FBVyxDQUFDa0IsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0gsSUFBSSxDQUFDO0VBRTVDLElBQUlKLFdBQVcsSUFBSSxDQUFDLEVBQUU7SUFDbEIsT0FBTyxJQUFBRSxtQkFBRSxFQUFDLHNDQUFzQyxFQUFFO01BQzlDRyxLQUFLLEVBQUVBLEtBQUssQ0FBQ0csS0FBSyxDQUFDLENBQUMsRUFBRVQsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDVSxJQUFJLENBQUMsSUFBSSxDQUFDO01BQzNDQyxLQUFLLEVBQUVWO0lBQ1gsQ0FBQyxDQUFDO0VBQ04sQ0FBQyxNQUFNO0lBQ0gsTUFBTVcsVUFBVSxHQUFHTixLQUFLLENBQUNPLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sSUFBQVYsbUJBQUUsRUFBQyxxQ0FBcUMsRUFBRTtNQUFFRyxLQUFLLEVBQUVBLEtBQUssQ0FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQztNQUFFRSxVQUFVLEVBQUVBO0lBQVcsQ0FBQyxDQUFDO0VBQ3pHO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=