matrix-react-sdk
Version:
SDK for matrix.org using React
79 lines (74 loc) • 14.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _types = require("matrix-js-sdk/src/types");
var _lodash = require("lodash");
var _languageHandler = require("../../../languageHandler");
var _DMRoomMap = _interopRequireDefault(require("../../../utils/DMRoomMap"));
var _FacePile = _interopRequireDefault(require("./FacePile"));
var _useRoomMembers = require("../../../hooks/useRoomMembers");
var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext"));
const _excluded = ["room", "onlyKnownUsers", "numShown"];
/*
Copyright 2024 New Vector Ltd.
Copyright 2021, 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const DEFAULT_NUM_FACES = 5;
const isKnownMember = member => !!_DMRoomMap.default.shared().getDMRoomsForUserId(member.userId)?.length;
const RoomFacePile = _ref => {
let {
room,
onlyKnownUsers = true,
numShown = DEFAULT_NUM_FACES
} = _ref,
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
const cli = (0, _react.useContext)(_MatrixClientContext.default);
const isJoined = room.getMyMembership() === _types.KnownMembership.Join;
let members = (0, _useRoomMembers.useRoomMembers)(room);
const count = members.length;
// sort users with an explicit avatar first
const iteratees = [member => member.getMxcAvatarUrl() ? 0 : 1];
if (onlyKnownUsers) {
members = members.filter(isKnownMember);
} else {
// sort known users first
iteratees.unshift(member => isKnownMember(member) ? 0 : 1);
}
// exclude ourselves from the shown members list
const shownMembers = (0, _lodash.sortBy)(members.filter(m => m.userId !== cli.getUserId()), iteratees).slice(0, numShown);
if (shownMembers.length < 1) return null;
// We reverse the order of the shown faces in CSS to simplify their visual overlap,
// reverse members in tooltip order to make the order between the two match up.
const commaSeparatedMembers = shownMembers.map(m => m.name).reverse().join(", ");
return /*#__PURE__*/_react.default.createElement(_FacePile.default, (0, _extends2.default)({
members: shownMembers,
size: "28px",
overflow: members.length > numShown,
tooltipLabel: props.onClick ? (0, _languageHandler._t)("room|face_pile_tooltip_label", {
count
}) : (0, _languageHandler._t)("common|n_members", {
count
}),
tooltipShortcut: isJoined ? (0, _languageHandler._t)("room|face_pile_tooltip_shortcut_joined", {
commaSeparatedMembers
}) : (0, _languageHandler._t)("room|face_pile_tooltip_shortcut", {
commaSeparatedMembers
})
}, props), onlyKnownUsers && /*#__PURE__*/_react.default.createElement("span", {
className: "mx_FacePile_summary"
}, (0, _languageHandler._t)("room|face_pile_summary", {
count: members.length
})));
};
var _default = exports.default = RoomFacePile;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdHlwZXMiLCJfbG9kYXNoIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9ETVJvb21NYXAiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ZhY2VQaWxlIiwiX3VzZVJvb21NZW1iZXJzIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJERUZBVUxUX05VTV9GQUNFUyIsImlzS25vd25NZW1iZXIiLCJtZW1iZXIiLCJETVJvb21NYXAiLCJzaGFyZWQiLCJnZXRETVJvb21zRm9yVXNlcklkIiwidXNlcklkIiwibGVuZ3RoIiwiUm9vbUZhY2VQaWxlIiwiX3JlZiIsInJvb20iLCJvbmx5S25vd25Vc2VycyIsIm51bVNob3duIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJpc0pvaW5lZCIsImdldE15TWVtYmVyc2hpcCIsIktub3duTWVtYmVyc2hpcCIsIkpvaW4iLCJtZW1iZXJzIiwidXNlUm9vbU1lbWJlcnMiLCJjb3VudCIsIml0ZXJhdGVlcyIsImdldE14Y0F2YXRhclVybCIsImZpbHRlciIsInVuc2hpZnQiLCJzaG93bk1lbWJlcnMiLCJzb3J0QnkiLCJtIiwiZ2V0VXNlcklkIiwic2xpY2UiLCJjb21tYVNlcGFyYXRlZE1lbWJlcnMiLCJtYXAiLCJuYW1lIiwicmV2ZXJzZSIsImpvaW4iLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwic2l6ZSIsIm92ZXJmbG93IiwidG9vbHRpcExhYmVsIiwib25DbGljayIsIl90IiwidG9vbHRpcFNob3J0Y3V0IiwiY2xhc3NOYW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvUm9vbUZhY2VQaWxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMSwgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgRkMsIEhUTUxBdHRyaWJ1dGVzLCB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb29tLCBSb29tTWVtYmVyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgS25vd25NZW1iZXJzaGlwIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3R5cGVzXCI7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IERNUm9vbU1hcCBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvRE1Sb29tTWFwXCI7XG5pbXBvcnQgRmFjZVBpbGUgZnJvbSBcIi4vRmFjZVBpbGVcIjtcbmltcG9ydCB7IHVzZVJvb21NZW1iZXJzIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZVJvb21NZW1iZXJzXCI7XG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uRXZlbnQgfSBmcm9tIFwiLi9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5cbmNvbnN0IERFRkFVTFRfTlVNX0ZBQ0VTID0gNTtcblxuY29uc3QgaXNLbm93bk1lbWJlciA9IChtZW1iZXI6IFJvb21NZW1iZXIpOiBib29sZWFuID0+ICEhRE1Sb29tTWFwLnNoYXJlZCgpLmdldERNUm9vbXNGb3JVc2VySWQobWVtYmVyLnVzZXJJZCk/Lmxlbmd0aDtcblxuaW50ZXJmYWNlIElQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4ge1xuICAgIHJvb206IFJvb207XG4gICAgb25seUtub3duVXNlcnM/OiBib29sZWFuO1xuICAgIG51bVNob3duPzogbnVtYmVyO1xuICAgIG9uQ2xpY2s/OiAoZTogQnV0dG9uRXZlbnQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufVxuXG5jb25zdCBSb29tRmFjZVBpbGU6IEZDPElQcm9wcz4gPSAoeyByb29tLCBvbmx5S25vd25Vc2VycyA9IHRydWUsIG51bVNob3duID0gREVGQVVMVF9OVU1fRkFDRVMsIC4uLnByb3BzIH0pID0+IHtcbiAgICBjb25zdCBjbGkgPSB1c2VDb250ZXh0KE1hdHJpeENsaWVudENvbnRleHQpO1xuICAgIGNvbnN0IGlzSm9pbmVkID0gcm9vbS5nZXRNeU1lbWJlcnNoaXAoKSA9PT0gS25vd25NZW1iZXJzaGlwLkpvaW47XG4gICAgbGV0IG1lbWJlcnMgPSB1c2VSb29tTWVtYmVycyhyb29tKTtcbiAgICBjb25zdCBjb3VudCA9IG1lbWJlcnMubGVuZ3RoO1xuXG4gICAgLy8gc29ydCB1c2VycyB3aXRoIGFuIGV4cGxpY2l0IGF2YXRhciBmaXJzdFxuICAgIGNvbnN0IGl0ZXJhdGVlcyA9IFsobWVtYmVyOiBSb29tTWVtYmVyKSA9PiAobWVtYmVyLmdldE14Y0F2YXRhclVybCgpID8gMCA6IDEpXTtcbiAgICBpZiAob25seUtub3duVXNlcnMpIHtcbiAgICAgICAgbWVtYmVycyA9IG1lbWJlcnMuZmlsdGVyKGlzS25vd25NZW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNvcnQga25vd24gdXNlcnMgZmlyc3RcbiAgICAgICAgaXRlcmF0ZWVzLnVuc2hpZnQoKG1lbWJlcikgPT4gKGlzS25vd25NZW1iZXIobWVtYmVyKSA/IDAgOiAxKSk7XG4gICAgfVxuXG4gICAgLy8gZXhjbHVkZSBvdXJzZWx2ZXMgZnJvbSB0aGUgc2hvd24gbWVtYmVycyBsaXN0XG4gICAgY29uc3Qgc2hvd25NZW1iZXJzID0gc29ydEJ5KFxuICAgICAgICBtZW1iZXJzLmZpbHRlcigobSkgPT4gbS51c2VySWQgIT09IGNsaS5nZXRVc2VySWQoKSksXG4gICAgICAgIGl0ZXJhdGVlcyxcbiAgICApLnNsaWNlKDAsIG51bVNob3duKTtcbiAgICBpZiAoc2hvd25NZW1iZXJzLmxlbmd0aCA8IDEpIHJldHVybiBudWxsO1xuXG4gICAgLy8gV2UgcmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHNob3duIGZhY2VzIGluIENTUyB0byBzaW1wbGlmeSB0aGVpciB2aXN1YWwgb3ZlcmxhcCxcbiAgICAvLyByZXZlcnNlIG1lbWJlcnMgaW4gdG9vbHRpcCBvcmRlciB0byBtYWtlIHRoZSBvcmRlciBiZXR3ZWVuIHRoZSB0d28gbWF0Y2ggdXAuXG4gICAgY29uc3QgY29tbWFTZXBhcmF0ZWRNZW1iZXJzID0gc2hvd25NZW1iZXJzXG4gICAgICAgIC5tYXAoKG0pID0+IG0ubmFtZSlcbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZhY2VQaWxlXG4gICAgICAgICAgICBtZW1iZXJzPXtzaG93bk1lbWJlcnN9XG4gICAgICAgICAgICBzaXplPVwiMjhweFwiXG4gICAgICAgICAgICBvdmVyZmxvdz17bWVtYmVycy5sZW5ndGggPiBudW1TaG93bn1cbiAgICAgICAgICAgIHRvb2x0aXBMYWJlbD17XG4gICAgICAgICAgICAgICAgcHJvcHMub25DbGljayA/IF90KFwicm9vbXxmYWNlX3BpbGVfdG9vbHRpcF9sYWJlbFwiLCB7IGNvdW50IH0pIDogX3QoXCJjb21tb258bl9tZW1iZXJzXCIsIHsgY291bnQgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvb2x0aXBTaG9ydGN1dD17XG4gICAgICAgICAgICAgICAgaXNKb2luZWRcbiAgICAgICAgICAgICAgICAgICAgPyBfdChcInJvb218ZmFjZV9waWxlX3Rvb2x0aXBfc2hvcnRjdXRfam9pbmVkXCIsIHsgY29tbWFTZXBhcmF0ZWRNZW1iZXJzIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX3QoXCJyb29tfGZhY2VfcGlsZV90b29sdGlwX3Nob3J0Y3V0XCIsIHsgY29tbWFTZXBhcmF0ZWRNZW1iZXJzIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtvbmx5S25vd25Vc2VycyAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfRmFjZVBpbGVfc3VtbWFyeVwiPntfdChcInJvb218ZmFjZV9waWxlX3N1bW1hcnlcIiwgeyBjb3VudDogbWVtYmVycy5sZW5ndGggfSl9PC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9GYWNlUGlsZT5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUm9vbUZhY2VQaWxlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBRCxzQkFBQSxDQUFBTCxP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LE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUM7RUFDbEU7O0VBRUE7RUFDQSxNQUFNMkIsWUFBWSxHQUFHLElBQUFDLGNBQU0sRUFDdkJSLE9BQU8sQ0FBQ0ssTUFBTSxDQUFFSSxDQUFDLElBQUtBLENBQUMsQ0FBQ3pCLE1BQU0sS0FBS1MsR0FBRyxDQUFDaUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNuRFAsU0FDSixDQUFDLENBQUNRLEtBQUssQ0FBQyxDQUFDLEVBQUVyQixRQUFRLENBQUM7RUFDcEIsSUFBSWlCLFlBQVksQ0FBQ3RCLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJOztFQUV4QztFQUNBO0VBQ0EsTUFBTTJCLHFCQUFxQixHQUFHTCxZQUFZLENBQ3JDTSxHQUFHLENBQUVKLENBQUMsSUFBS0EsQ0FBQyxDQUFDSyxJQUFJLENBQUMsQ0FDbEJDLE9BQU8sQ0FBQyxDQUFDLENBQ1RDLElBQUksQ0FBQyxJQUFJLENBQUM7RUFFZixvQkFDSXRFLE1BQUEsQ0FBQWtCLE9BQUEsQ0FBQXFELGFBQUEsQ0FBQy9ELFNBQUEsQ0FBQVUsT0FBUSxNQUFBc0QsU0FBQSxDQUFBdEQsT0FBQTtJQUNMb0MsT0FBTyxFQUFFTyxZQUFhO0lBQ3RCWSxJQUFJLEVBQUMsTUFBTTtJQUNYQyxRQUFRLEVBQUVwQixPQUFPLENBQUNmLE1BQU0sR0FBR0ssUUFBUztJQUNwQytCLFlBQVksRUFDUjlCLEtBQUssQ0FBQytCLE9BQU8sR0FBRyxJQUFBQyxtQkFBRSxFQUFDLDhCQUE4QixFQUFFO01BQUVyQjtJQUFNLENBQUMsQ0FBQyxHQUFHLElBQUFxQixtQkFBRSxFQUFDLGtCQUFrQixFQUFFO01BQUVyQjtJQUFNLENBQUMsQ0FDbkc7SUFDRHNCLGVBQWUsRUFDWDVCLFFBQVEsR0FDRixJQUFBMkIsbUJBQUUsRUFBQyx3Q0FBd0MsRUFBRTtNQUFFWDtJQUFzQixDQUFDLENBQUMsR0FDdkUsSUFBQVcsbUJBQUUsRUFBQyxpQ0FBaUMsRUFBRTtNQUFFWDtJQUFzQixDQUFDO0VBQ3hFLEdBQ0dyQixLQUFLLEdBRVJGLGNBQWMsaUJBQ1gzQyxNQUFBLENBQUFrQixPQUFBLENBQUFxRCxhQUFBO0lBQU1RLFNBQVMsRUFBQztFQUFxQixHQUFFLElBQUFGLG1CQUFFLEVBQUMsd0JBQXdCLEVBQUU7SUFBRXJCLEtBQUssRUFBRUYsT0FBTyxDQUFDZjtFQUFPLENBQUMsQ0FBUSxDQUVuRyxDQUFDO0FBRW5CLENBQUM7QUFBQyxJQUFBeUMsUUFBQSxHQUFBQyxPQUFBLENBQUEvRCxPQUFBLEdBRWFzQixZQUFZIiwiaWdub3JlTGlzdCI6W119