matrix-react-sdk
Version:
SDK for matrix.org using React
133 lines (103 loc) • 14.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Flair = _interopRequireDefault(require("../elements/Flair.js"));
var _FlairStore = _interopRequireDefault(require("../../../stores/FlairStore"));
var _FormattingUtils = require("../../../utils/FormattingUtils");
var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext"));
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _dec, _class, _class2, _temp;
let SenderProfile = (_dec = (0, _replaceableComponent.replaceableComponent)("views.messages.SenderProfile"), _dec(_class = (_temp = _class2 = class SenderProfile extends _react.default.Component {
constructor(...args) {
super(...args);
(0, _defineProperty2.default)(this, "state", {
userGroups: null,
relatedGroups: []
});
(0, _defineProperty2.default)(this, "onRoomStateEvents", event => {
if (event.getType() === 'm.room.related_groups' && event.getRoomId() === this.props.mxEvent.getRoomId()) {
this._updateRelatedGroups();
}
});
}
componentDidMount() {
this.unmounted = false;
this._updateRelatedGroups();
_FlairStore.default.getPublicisedGroupsCached(this.context, this.props.mxEvent.getSender()).then(userGroups => {
if (this.unmounted) return;
this.setState({
userGroups
});
});
this.context.on('RoomState.events', this.onRoomStateEvents);
}
componentWillUnmount() {
this.unmounted = true;
this.context.removeListener('RoomState.events', this.onRoomStateEvents);
}
_updateRelatedGroups() {
if (this.unmounted) return;
const room = this.context.getRoom(this.props.mxEvent.getRoomId());
if (!room) return;
const relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');
this.setState({
relatedGroups: relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : []
});
}
_getDisplayedGroups(userGroups, relatedGroups) {
let displayedGroups = userGroups || [];
if (relatedGroups && relatedGroups.length > 0) {
displayedGroups = relatedGroups.filter(groupId => {
return displayedGroups.includes(groupId);
});
} else {
displayedGroups = [];
}
return displayedGroups;
}
render() {
const {
mxEvent
} = this.props;
const colorClass = (0, _FormattingUtils.getUserNameColorClass)(mxEvent.getSender());
const name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();
const {
msgtype
} = mxEvent.getContent();
if (msgtype === 'm.emote') {
return /*#__PURE__*/_react.default.createElement("span", null); // emote message must include the name so don't duplicate it
}
let flair = /*#__PURE__*/_react.default.createElement("div", null);
if (this.props.enableFlair) {
const displayedGroups = this._getDisplayedGroups(this.state.userGroups, this.state.relatedGroups);
flair = /*#__PURE__*/_react.default.createElement(_Flair.default, {
key: "flair",
userId: mxEvent.getSender(),
groups: displayedGroups
});
}
const nameElem = name || ''; // Name + flair
const nameFlair = /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement("span", {
className: `mx_SenderProfile_name ${colorClass}`
}, nameElem), flair);
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_SenderProfile",
dir: "auto",
onClick: this.props.onClick
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_SenderProfile_hover"
}, nameFlair));
}
}, (0, _defineProperty2.default)(_class2, "propTypes", {
mxEvent: _propTypes.default.object.isRequired,
// event whose sender we're showing
onClick: _propTypes.default.func
}), (0, _defineProperty2.default)(_class2, "contextType", _MatrixClientContext.default), _temp)) || _class);
exports.default = SenderProfile;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL1NlbmRlclByb2ZpbGUuanMiXSwibmFtZXMiOlsiU2VuZGVyUHJvZmlsZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwidXNlckdyb3VwcyIsInJlbGF0ZWRHcm91cHMiLCJldmVudCIsImdldFR5cGUiLCJnZXRSb29tSWQiLCJwcm9wcyIsIm14RXZlbnQiLCJfdXBkYXRlUmVsYXRlZEdyb3VwcyIsImNvbXBvbmVudERpZE1vdW50IiwidW5tb3VudGVkIiwiRmxhaXJTdG9yZSIsImdldFB1YmxpY2lzZWRHcm91cHNDYWNoZWQiLCJjb250ZXh0IiwiZ2V0U2VuZGVyIiwidGhlbiIsInNldFN0YXRlIiwib24iLCJvblJvb21TdGF0ZUV2ZW50cyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlTGlzdGVuZXIiLCJyb29tIiwiZ2V0Um9vbSIsInJlbGF0ZWRHcm91cHNFdmVudCIsImN1cnJlbnRTdGF0ZSIsImdldFN0YXRlRXZlbnRzIiwiZ2V0Q29udGVudCIsImdyb3VwcyIsIl9nZXREaXNwbGF5ZWRHcm91cHMiLCJkaXNwbGF5ZWRHcm91cHMiLCJsZW5ndGgiLCJmaWx0ZXIiLCJncm91cElkIiwiaW5jbHVkZXMiLCJyZW5kZXIiLCJjb2xvckNsYXNzIiwibmFtZSIsInNlbmRlciIsIm1zZ3R5cGUiLCJmbGFpciIsImVuYWJsZUZsYWlyIiwic3RhdGUiLCJuYW1lRWxlbSIsIm5hbWVGbGFpciIsIm9uQ2xpY2siLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiZnVuYyIsIk1hdHJpeENsaWVudENvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBZ0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBR3FCQSxhLFdBRHBCLGdEQUFxQiw4QkFBckIsQyxtQ0FBRCxNQUNxQkEsYUFEckIsU0FDMkNDLGVBQU1DLFNBRGpELENBQzJEO0FB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LFFBQUlDLEtBQUssZ0JBQUcseUNBQVo7O0FBQ0EsUUFBSSxLQUFLakMsS0FBTCxDQUFXa0MsV0FBZixFQUE0QjtBQUN4QixZQUFNWCxlQUFlLEdBQUcsS0FBS0QsbUJBQUwsQ0FDcEIsS0FBS2EsS0FBTCxDQUFXeEMsVUFEUyxFQUNHLEtBQUt3QyxLQUFMLENBQVd2QyxhQURkLENBQXhCOztBQUlBcUMsTUFBQUEsS0FBSyxnQkFBRyw2QkFBQyxjQUFEO0FBQU8sUUFBQSxHQUFHLEVBQUMsT0FBWDtBQUNKLFFBQUEsTUFBTSxFQUFFaEMsT0FBTyxDQUFDTyxTQUFSLEVBREo7QUFFSixRQUFBLE1BQU0sRUFBRWU7QUFGSixRQUFSO0FBSUg7O0FBRUQsVUFBTWEsUUFBUSxHQUFHTixJQUFJLElBQUksRUFBekIsQ0F0QkssQ0F3Qkw7O0FBQ0EsVUFBTU8sU0FBUyxnQkFBRyx3REFDZDtBQUFNLE1BQUEsU0FBUyxFQUFHLHlCQUF3QlIsVUFBVztBQUFyRCxPQUNNTyxRQUROLENBRGMsRUFJWkgsS0FKWSxDQUFsQjs7QUFPQSx3QkFDSTtBQUFLLE1BQUEsU0FBUyxFQUFDLGtCQUFmO0FBQWtDLE1BQUEsR0FBRyxFQUFDLE1BQXRDO0FBQTZDLE1BQUEsT0FBTyxFQUFFLEtBQUtqQyxLQUFMLENBQVdzQztBQUFqRSxvQkFDSTtBQUFLLE1BQUEsU0FBUyxFQUFDO0FBQWYsT0FDTUQsU0FETixDQURKLENBREo7QUFPSDs7QUF0R3NELEMsc0RBQ3BDO0FBQ2ZwQyxFQUFBQSxPQUFPLEVBQUVzQyxtQkFBVUMsTUFBVixDQUFpQkMsVUFEWDtBQUN1QjtBQUN0Q0gsRUFBQUEsT0FBTyxFQUFFQyxtQkFBVUc7QUFGSixDLHlEQUtFQyw0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBGbGFpciBmcm9tICcuLi9lbGVtZW50cy9GbGFpci5qcyc7XG5pbXBvcnQgRmxhaXJTdG9yZSBmcm9tICcuLi8uLi8uLi9zdG9yZXMvRmxhaXJTdG9yZSc7XG5pbXBvcnQge2dldFVzZXJOYW1lQ29sb3JDbGFzc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvRm9ybWF0dGluZ1V0aWxzJztcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcblxuQHJlcGxhY2VhYmxlQ29tcG9uZW50KFwidmlld3MubWVzc2FnZXMuU2VuZGVyUHJvZmlsZVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VuZGVyUHJvZmlsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgbXhFdmVudDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLCAvLyBldmVudCB3aG9zZSBzZW5kZXIgd2UncmUgc2hvd2luZ1xuICAgICAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB9O1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gTWF0cml4Q2xpZW50Q29udGV4dDtcblxuICAgIHN0YXRlID0ge1xuICAgICAgICB1c2VyR3JvdXBzOiBudWxsLFxuICAgICAgICByZWxhdGVkR3JvdXBzOiBbXSxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudW5tb3VudGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVJlbGF0ZWRHcm91cHMoKTtcblxuICAgICAgICBGbGFpclN0b3JlLmdldFB1YmxpY2lzZWRHcm91cHNDYWNoZWQoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMubXhFdmVudC5nZXRTZW5kZXIoKSxcbiAgICAgICAgKS50aGVuKCh1c2VyR3JvdXBzKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy51bm1vdW50ZWQpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXJHcm91cHN9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0Lm9uKCdSb29tU3RhdGUuZXZlbnRzJywgdGhpcy5vblJvb21TdGF0ZUV2ZW50cyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMudW5tb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnJlbW92ZUxpc3RlbmVyKCdSb29tU3RhdGUuZXZlbnRzJywgdGhpcy5vblJvb21TdGF0ZUV2ZW50cyk7XG4gICAgfVxuXG4gICAgb25Sb29tU3RhdGVFdmVudHMgPSBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5nZXRUeXBlKCkgPT09ICdtLnJvb20ucmVsYXRlZF9ncm91cHMnICYmXG4gICAgICAgICAgICBldmVudC5nZXRSb29tSWQoKSA9PT0gdGhpcy5wcm9wcy5teEV2ZW50LmdldFJvb21JZCgpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlUmVsYXRlZEdyb3VwcygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIF91cGRhdGVSZWxhdGVkR3JvdXBzKCkge1xuICAgICAgICBpZiAodGhpcy51bm1vdW50ZWQpIHJldHVybjtcbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMuY29udGV4dC5nZXRSb29tKHRoaXMucHJvcHMubXhFdmVudC5nZXRSb29tSWQoKSk7XG4gICAgICAgIGlmICghcm9vbSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlbGF0ZWRHcm91cHNFdmVudCA9IHJvb20uY3VycmVudFN0YXRlLmdldFN0YXRlRXZlbnRzKCdtLnJvb20ucmVsYXRlZF9ncm91cHMnLCAnJyk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgcmVsYXRlZEdyb3VwczogcmVsYXRlZEdyb3Vwc0V2ZW50ID8gcmVsYXRlZEdyb3Vwc0V2ZW50LmdldENvbnRlbnQoKS5ncm91cHMgfHwgW10gOiBbXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2dldERpc3BsYXllZEdyb3Vwcyh1c2VyR3JvdXBzLCByZWxhdGVkR3JvdXBzKSB7XG4gICAgICAgIGxldCBkaXNwbGF5ZWRHcm91cHMgPSB1c2VyR3JvdXBzIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZEdyb3VwcyAmJiByZWxhdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRpc3BsYXllZEdyb3VwcyA9IHJlbGF0ZWRHcm91cHMuZmlsdGVyKChncm91cElkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXllZEdyb3Vwcy5pbmNsdWRlcyhncm91cElkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlzcGxheWVkR3JvdXBzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3BsYXllZEdyb3VwcztcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtteEV2ZW50fSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbG9yQ2xhc3MgPSBnZXRVc2VyTmFtZUNvbG9yQ2xhc3MobXhFdmVudC5nZXRTZW5kZXIoKSk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBteEV2ZW50LnNlbmRlciA/IG14RXZlbnQuc2VuZGVyLm5hbWUgOiBteEV2ZW50LmdldFNlbmRlcigpO1xuICAgICAgICBjb25zdCB7bXNndHlwZX0gPSBteEV2ZW50LmdldENvbnRlbnQoKTtcblxuICAgICAgICBpZiAobXNndHlwZSA9PT0gJ20uZW1vdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gPHNwYW4gLz47IC8vIGVtb3RlIG1lc3NhZ2UgbXVzdCBpbmNsdWRlIHRoZSBuYW1lIHNvIGRvbid0IGR1cGxpY2F0ZSBpdFxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZsYWlyID0gPGRpdiAvPjtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlRmxhaXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXllZEdyb3VwcyA9IHRoaXMuX2dldERpc3BsYXllZEdyb3VwcyhcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVzZXJHcm91cHMsIHRoaXMuc3RhdGUucmVsYXRlZEdyb3VwcyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZsYWlyID0gPEZsYWlyIGtleT0nZmxhaXInXG4gICAgICAgICAgICAgICAgdXNlcklkPXtteEV2ZW50LmdldFNlbmRlcigpfVxuICAgICAgICAgICAgICAgIGdyb3Vwcz17ZGlzcGxheWVkR3JvdXBzfVxuICAgICAgICAgICAgLz47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYW1lRWxlbSA9IG5hbWUgfHwgJyc7XG5cbiAgICAgICAgLy8gTmFtZSArIGZsYWlyXG4gICAgICAgIGNvbnN0IG5hbWVGbGFpciA9IDxzcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgbXhfU2VuZGVyUHJvZmlsZV9uYW1lICR7Y29sb3JDbGFzc31gfT5cbiAgICAgICAgICAgICAgICB7IG5hbWVFbGVtIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIHsgZmxhaXIgfVxuICAgICAgICA8L3NwYW4+O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1NlbmRlclByb2ZpbGVcIiBkaXI9XCJhdXRvXCIgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1NlbmRlclByb2ZpbGVfaG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lRmxhaXIgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19