UNPKG

matrix-react-sdk

Version:
122 lines (120 loc) 20.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.idNameForRoom = idNameForRoom; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _BaseAvatar = _interopRequireDefault(require("./BaseAvatar")); var _ImageView = _interopRequireDefault(require("../elements/ImageView")); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _Modal = _interopRequireDefault(require("../../../Modal")); var Avatar = _interopRequireWildcard(require("../../../Avatar")); var _DMRoomMap = _interopRequireDefault(require("../../../utils/DMRoomMap")); var _Media = require("../../../customisations/Media"); var _LocalRoom = require("../../../models/LocalRoom"); var _arrays = require("../../../utils/arrays"); const _excluded = ["room", "oobData", "viewAvatarOnClick", "onClick", "className"]; /* Copyright 2024 New Vector Ltd. Copyright 2015, 2016 OpenMarket 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 _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; } function idNameForRoom(room) { const dmMapUserId = _DMRoomMap.default.shared().getUserIdForRoomId(room.roomId); // If the room is a DM, we use the other user's ID for the color hash // in order to match the room avatar with their avatar if (dmMapUserId) return dmMapUserId; if (room instanceof _LocalRoom.LocalRoom && room.targets.length === 1) { return room.targets[0].userId; } return room.roomId; } class RoomAvatar extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "onRoomStateEvents", ev => { if (ev.getRoomId() !== this.props.room?.roomId || ev.getType() !== _matrix.EventType.RoomAvatar) return; this.setState({ urls: RoomAvatar.getImageUrls(this.props) }); }); (0, _defineProperty2.default)(this, "onRoomAvatarClick", () => { const avatarUrl = Avatar.avatarUrlForRoom(this.props.room ?? null, undefined, undefined, undefined); if (!avatarUrl) return; const params = { src: avatarUrl, name: this.props.room?.name }; _Modal.default.createDialog(_ImageView.default, params, "mx_Dialog_lightbox", undefined, true); }); this.state = { urls: RoomAvatar.getImageUrls(this.props) }; } componentDidMount() { _MatrixClientPeg.MatrixClientPeg.safeGet().on(_matrix.RoomStateEvent.Events, this.onRoomStateEvents); } componentWillUnmount() { _MatrixClientPeg.MatrixClientPeg.get()?.removeListener(_matrix.RoomStateEvent.Events, this.onRoomStateEvents); } static getDerivedStateFromProps(nextProps) { return { urls: RoomAvatar.getImageUrls(nextProps) }; } static getImageUrls(props) { let oobAvatar = null; if (props.oobData.avatarUrl) { oobAvatar = (0, _Media.mediaFromMxc)(props.oobData.avatarUrl).getThumbnailOfSourceHttp(parseInt(props.size, 10), parseInt(props.size, 10), "crop"); } return (0, _arrays.filterBoolean)([oobAvatar, // highest priority RoomAvatar.getRoomAvatarUrl(props)]); } static getRoomAvatarUrl(props) { if (!props.room) return null; return Avatar.avatarUrlForRoom(props.room, parseInt(props.size, 10), parseInt(props.size, 10), "crop"); } get roomIdName() { const room = this.props.room; if (room) { return idNameForRoom(room); } else { return this.props.oobData?.roomId; } } render() { const _this$props = this.props, { room, oobData, viewAvatarOnClick, onClick, className } = _this$props, otherProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded); const roomName = room?.name ?? oobData.name ?? "?"; return /*#__PURE__*/_react.default.createElement(_BaseAvatar.default, (0, _extends2.default)({}, otherProps, { type: (room?.getType() ?? this.props.oobData?.roomType) === _matrix.RoomType.Space ? "square" : "round", name: roomName, idName: this.roomIdName, urls: this.state.urls, onClick: viewAvatarOnClick && this.state.urls[0] ? this.onRoomAvatarClick : onClick })); } } exports.default = RoomAvatar; (0, _defineProperty2.default)(RoomAvatar, "defaultProps", { size: "36px", oobData: {} }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfQmFzZUF2YXRhciIsIl9JbWFnZVZpZXciLCJfTWF0cml4Q2xpZW50UGVnIiwiX01vZGFsIiwiQXZhdGFyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRE1Sb29tTWFwIiwiX01lZGlhIiwiX0xvY2FsUm9vbSIsIl9hcnJheXMiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJpZE5hbWVGb3JSb29tIiwicm9vbSIsImRtTWFwVXNlcklkIiwiRE1Sb29tTWFwIiwic2hhcmVkIiwiZ2V0VXNlcklkRm9yUm9vbUlkIiwicm9vbUlkIiwiTG9jYWxSb29tIiwidGFyZ2V0cyIsImxlbmd0aCIsInVzZXJJZCIsIlJvb21BdmF0YXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZXYiLCJnZXRSb29tSWQiLCJnZXRUeXBlIiwiRXZlbnRUeXBlIiwic2V0U3RhdGUiLCJ1cmxzIiwiZ2V0SW1hZ2VVcmxzIiwiYXZhdGFyVXJsIiwiYXZhdGFyVXJsRm9yUm9vbSIsInVuZGVmaW5lZCIsInBhcmFtcyIsInNyYyIsIm5hbWUiLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkltYWdlVmlldyIsInN0YXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0Iiwib24iLCJSb29tU3RhdGVFdmVudCIsIkV2ZW50cyIsIm9uUm9vbVN0YXRlRXZlbnRzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVMaXN0ZW5lciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsIm9vYkF2YXRhciIsIm9vYkRhdGEiLCJtZWRpYUZyb21NeGMiLCJnZXRUaHVtYm5haWxPZlNvdXJjZUh0dHAiLCJwYXJzZUludCIsInNpemUiLCJmaWx0ZXJCb29sZWFuIiwiZ2V0Um9vbUF2YXRhclVybCIsInJvb21JZE5hbWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsInZpZXdBdmF0YXJPbkNsaWNrIiwib25DbGljayIsImNsYXNzTmFtZSIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwicm9vbU5hbWUiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwidHlwZSIsInJvb21UeXBlIiwiUm9vbVR5cGUiLCJTcGFjZSIsImlkTmFtZSIsIm9uUm9vbUF2YXRhckNsaWNrIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2F2YXRhcnMvUm9vbUF2YXRhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFByb3BzIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb29tLCBSb29tU3RhdGVFdmVudCwgTWF0cml4RXZlbnQsIEV2ZW50VHlwZSwgUm9vbVR5cGUgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCBCYXNlQXZhdGFyIGZyb20gXCIuL0Jhc2VBdmF0YXJcIjtcbmltcG9ydCBJbWFnZVZpZXcgZnJvbSBcIi4uL2VsZW1lbnRzL0ltYWdlVmlld1wiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0ICogYXMgQXZhdGFyIGZyb20gXCIuLi8uLi8uLi9BdmF0YXJcIjtcbmltcG9ydCBETVJvb21NYXAgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL0RNUm9vbU1hcFwiO1xuaW1wb3J0IHsgbWVkaWFGcm9tTXhjIH0gZnJvbSBcIi4uLy4uLy4uL2N1c3RvbWlzYXRpb25zL01lZGlhXCI7XG5pbXBvcnQgeyBJT09CRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvVGhyZWVwaWRJbnZpdGVTdG9yZVwiO1xuaW1wb3J0IHsgTG9jYWxSb29tIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9Mb2NhbFJvb21cIjtcbmltcG9ydCB7IGZpbHRlckJvb2xlYW4gfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXlzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMgZXh0ZW5kcyBPbWl0PENvbXBvbmVudFByb3BzPHR5cGVvZiBCYXNlQXZhdGFyPiwgXCJuYW1lXCIgfCBcImlkTmFtZVwiIHwgXCJ1cmxcIiB8IFwib25DbGlja1wiPiB7XG4gICAgLy8gUm9vbSBtYXkgYmUgbGVmdCB1bnNldCBoZXJlLCBidXQgaWYgaXQgaXMsXG4gICAgLy8gb29iRGF0YS5hdmF0YXJVcmwgc2hvdWxkIGJlIHNldCAoZWxzZSB0aGVyZVxuICAgIC8vIHdvdWxkIGJlIG5vd2hlcmUgdG8gZ2V0IHRoZSBhdmF0YXIgZnJvbSlcbiAgICByb29tPzogUm9vbTtcbiAgICBvb2JEYXRhOiBJT09CRGF0YSAmIHtcbiAgICAgICAgcm9vbUlkPzogc3RyaW5nO1xuICAgIH07XG4gICAgdmlld0F2YXRhck9uQ2xpY2s/OiBib29sZWFuO1xuICAgIG9uQ2xpY2s/KCk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHVybHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWROYW1lRm9yUm9vbShyb29tOiBSb29tKTogc3RyaW5nIHtcbiAgICBjb25zdCBkbU1hcFVzZXJJZCA9IERNUm9vbU1hcC5zaGFyZWQoKS5nZXRVc2VySWRGb3JSb29tSWQocm9vbS5yb29tSWQpO1xuICAgIC8vIElmIHRoZSByb29tIGlzIGEgRE0sIHdlIHVzZSB0aGUgb3RoZXIgdXNlcidzIElEIGZvciB0aGUgY29sb3IgaGFzaFxuICAgIC8vIGluIG9yZGVyIHRvIG1hdGNoIHRoZSByb29tIGF2YXRhciB3aXRoIHRoZWlyIGF2YXRhclxuICAgIGlmIChkbU1hcFVzZXJJZCkgcmV0dXJuIGRtTWFwVXNlcklkO1xuXG4gICAgaWYgKHJvb20gaW5zdGFuY2VvZiBMb2NhbFJvb20gJiYgcm9vbS50YXJnZXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcm9vbS50YXJnZXRzWzBdLnVzZXJJZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vbS5yb29tSWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvb21BdmF0YXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgc2l6ZTogXCIzNnB4XCIsXG4gICAgICAgIG9vYkRhdGE6IHt9LFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHVybHM6IFJvb21BdmF0YXIuZ2V0SW1hZ2VVcmxzKHRoaXMucHJvcHMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcbiAgICAgICAgTWF0cml4Q2xpZW50UGVnLnNhZmVHZXQoKS5vbihSb29tU3RhdGVFdmVudC5FdmVudHMsIHRoaXMub25Sb29tU3RhdGVFdmVudHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgTWF0cml4Q2xpZW50UGVnLmdldCgpPy5yZW1vdmVMaXN0ZW5lcihSb29tU3RhdGVFdmVudC5FdmVudHMsIHRoaXMub25Sb29tU3RhdGVFdmVudHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wczogSVByb3BzKTogSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVybHM6IFJvb21BdmF0YXIuZ2V0SW1hZ2VVcmxzKG5leHRQcm9wcyksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb21TdGF0ZUV2ZW50cyA9IChldjogTWF0cml4RXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGV2LmdldFJvb21JZCgpICE9PSB0aGlzLnByb3BzLnJvb20/LnJvb21JZCB8fCBldi5nZXRUeXBlKCkgIT09IEV2ZW50VHlwZS5Sb29tQXZhdGFyKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB1cmxzOiBSb29tQXZhdGFyLmdldEltYWdlVXJscyh0aGlzLnByb3BzKSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc3RhdGljIGdldEltYWdlVXJscyhwcm9wczogSVByb3BzKTogc3RyaW5nW10ge1xuICAgICAgICBsZXQgb29iQXZhdGFyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKHByb3BzLm9vYkRhdGEuYXZhdGFyVXJsKSB7XG4gICAgICAgICAgICBvb2JBdmF0YXIgPSBtZWRpYUZyb21NeGMocHJvcHMub29iRGF0YS5hdmF0YXJVcmwpLmdldFRodW1ibmFpbE9mU291cmNlSHR0cChcbiAgICAgICAgICAgICAgICBwYXJzZUludChwcm9wcy5zaXplLCAxMCksXG4gICAgICAgICAgICAgICAgcGFyc2VJbnQocHJvcHMuc2l6ZSwgMTApLFxuICAgICAgICAgICAgICAgIFwiY3JvcFwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJCb29sZWFuKFtcbiAgICAgICAgICAgIG9vYkF2YXRhciwgLy8gaGlnaGVzdCBwcmlvcml0eVxuICAgICAgICAgICAgUm9vbUF2YXRhci5nZXRSb29tQXZhdGFyVXJsKHByb3BzKSxcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Um9vbUF2YXRhclVybChwcm9wczogSVByb3BzKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICghcHJvcHMucm9vbSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIEF2YXRhci5hdmF0YXJVcmxGb3JSb29tKHByb3BzLnJvb20sIHBhcnNlSW50KHByb3BzLnNpemUsIDEwKSwgcGFyc2VJbnQocHJvcHMuc2l6ZSwgMTApLCBcImNyb3BcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb21BdmF0YXJDbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgYXZhdGFyVXJsID0gQXZhdGFyLmF2YXRhclVybEZvclJvb20odGhpcy5wcm9wcy5yb29tID8/IG51bGwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICBpZiAoIWF2YXRhclVybCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzcmM6IGF2YXRhclVybCxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMucHJvcHMucm9vbT8ubmFtZSxcbiAgICAgICAgfTtcblxuICAgICAgICBNb2RhbC5jcmVhdGVEaWFsb2coSW1hZ2VWaWV3LCBwYXJhbXMsIFwibXhfRGlhbG9nX2xpZ2h0Ym94XCIsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0IHJvb21JZE5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMucHJvcHMucm9vbTtcblxuICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlkTmFtZUZvclJvb20ocm9vbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5vb2JEYXRhPy5yb29tSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IHsgcm9vbSwgb29iRGF0YSwgdmlld0F2YXRhck9uQ2xpY2ssIG9uQ2xpY2ssIGNsYXNzTmFtZSwgLi4ub3RoZXJQcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3Qgcm9vbU5hbWUgPSByb29tPy5uYW1lID8/IG9vYkRhdGEubmFtZSA/PyBcIj9cIjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJhc2VBdmF0YXJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgICAgICAgICAgICB0eXBlPXsocm9vbT8uZ2V0VHlwZSgpID8/IHRoaXMucHJvcHMub29iRGF0YT8ucm9vbVR5cGUpID09PSBSb29tVHlwZS5TcGFjZSA/IFwic3F1YXJlXCIgOiBcInJvdW5kXCJ9XG4gICAgICAgICAgICAgICAgbmFtZT17cm9vbU5hbWV9XG4gICAgICAgICAgICAgICAgaWROYW1lPXt0aGlzLnJvb21JZE5hbWV9XG4gICAgICAgICAgICAgICAgdXJscz17dGhpcy5zdGF0ZS51cmxzfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3ZpZXdBdmF0YXJPbkNsaWNrICYmIHRoaXMuc3RhdGUudXJsc1swXSA/IHRoaXMub25Sb29tQXZhdGFyQ2xpY2sgOiBvbkNsaWNr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