UNPKG

matrix-react-sdk

Version:
71 lines (67 loc) 8.41 kB
"use strict"; 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=