Merge pull request #6703 from nordeck/nic/feat/invite-reason-formatting

Allow to use basic html to format invite messages
This commit is contained in:
Travis Ralston 2021-09-01 14:46:54 -06:00 committed by GitHub
commit 5692b74b28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 4 deletions

View file

@ -16,11 +16,13 @@ limitations under the License.
import classNames from "classnames"; import classNames from "classnames";
import React from "react"; import React from "react";
import { sanitizedHtmlNode } from "../../../HtmlUtils";
import { _t } from "../../../languageHandler"; import { _t } from "../../../languageHandler";
import { replaceableComponent } from "../../../utils/replaceableComponent"; import { replaceableComponent } from "../../../utils/replaceableComponent";
interface IProps { interface IProps {
reason: string; reason: string;
htmlReason?: string;
} }
interface IState { interface IState {
@ -51,7 +53,7 @@ export default class InviteReason extends React.PureComponent<IProps, IState> {
}); });
return <div className={classes}> return <div className={classes}>
<div className="mx_InviteReason_reason">{ this.props.reason }</div> <div className="mx_InviteReason_reason">{ this.props.htmlReason ? sanitizedHtmlNode(this.props.htmlReason) : this.props.reason }</div>
<div className="mx_InviteReason_view" <div className="mx_InviteReason_view"
onClick={this.onViewClick} onClick={this.onViewClick}
> >

View file

@ -28,6 +28,8 @@ import { UPDATE_EVENT } from "../../../stores/AsyncStore";
import { replaceableComponent } from "../../../utils/replaceableComponent"; import { replaceableComponent } from "../../../utils/replaceableComponent";
import InviteReason from "../elements/InviteReason"; import InviteReason from "../elements/InviteReason";
const MemberEventHtmlReasonField = "io.element.html_reason";
const MessageCase = Object.freeze({ const MessageCase = Object.freeze({
NotLoggedIn: "NotLoggedIn", NotLoggedIn: "NotLoggedIn",
Joining: "Joining", Joining: "Joining",
@ -492,9 +494,13 @@ export default class RoomPreviewBar extends React.Component {
} }
const myUserId = MatrixClientPeg.get().getUserId(); const myUserId = MatrixClientPeg.get().getUserId();
const reason = this.props.room.currentState.getMember(myUserId).events.member.event.content.reason; const memberEventContent = this.props.room.currentState.getMember(myUserId).events.member.getContent();
if (reason) {
reasonElement = <InviteReason reason={reason} />; if (memberEventContent.reason) {
reasonElement = <InviteReason
reason={memberEventContent.reason}
htmlReason={memberEventContent[MemberEventHtmlReasonField]}
/>;
} }
primaryActionHandler = this.props.onJoinClick; primaryActionHandler = this.props.onJoinClick;