Always use current profile on thread events (#9524)
This commit is contained in:
parent
5fb0f5cc3e
commit
3f3005a3ca
7 changed files with 156 additions and 141 deletions
|
@ -23,7 +23,7 @@ import { getUserNameColorClass } from '../../../utils/FormattingUtils';
|
|||
import UserIdentifier from "../../../customisations/UserIdentifier";
|
||||
|
||||
interface IProps {
|
||||
member?: RoomMember;
|
||||
member?: RoomMember | null;
|
||||
fallbackName: string;
|
||||
onClick?(): void;
|
||||
colored?: boolean;
|
||||
|
|
|
@ -18,51 +18,27 @@ import React from 'react';
|
|||
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
||||
import { MsgType } from "matrix-js-sdk/src/@types/event";
|
||||
|
||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||
import DisambiguatedProfile from "./DisambiguatedProfile";
|
||||
import RoomContext, { TimelineRenderingType } from '../../../contexts/RoomContext';
|
||||
import SettingsStore from "../../../settings/SettingsStore";
|
||||
import { MatrixClientPeg } from "../../../MatrixClientPeg";
|
||||
import { useRoomMemberProfile } from '../../../hooks/room/useRoomMemberProfile';
|
||||
|
||||
interface IProps {
|
||||
mxEvent: MatrixEvent;
|
||||
onClick?(): void;
|
||||
}
|
||||
|
||||
export default class SenderProfile extends React.PureComponent<IProps> {
|
||||
public static contextType = MatrixClientContext;
|
||||
public context!: React.ContextType<typeof MatrixClientContext>;
|
||||
export default function SenderProfile({ mxEvent, onClick }: IProps) {
|
||||
const member = useRoomMemberProfile({
|
||||
userId: mxEvent.getSender(),
|
||||
member: mxEvent.sender,
|
||||
});
|
||||
|
||||
render() {
|
||||
const { mxEvent, onClick } = this.props;
|
||||
const msgtype = mxEvent.getContent().msgtype;
|
||||
|
||||
let member = mxEvent.sender;
|
||||
if (SettingsStore.getValue("useOnlyCurrentProfiles")) {
|
||||
const room = MatrixClientPeg.get().getRoom(mxEvent.getRoomId());
|
||||
if (room) {
|
||||
member = room.getMember(mxEvent.getSender());
|
||||
}
|
||||
}
|
||||
|
||||
return <RoomContext.Consumer>
|
||||
{ roomContext => {
|
||||
if (msgtype === MsgType.Emote &&
|
||||
roomContext.timelineRenderingType !== TimelineRenderingType.ThreadsList
|
||||
) {
|
||||
return null; // emote message must include the name so don't duplicate it
|
||||
}
|
||||
|
||||
return (
|
||||
<DisambiguatedProfile
|
||||
fallbackName={mxEvent.getSender() || ""}
|
||||
onClick={onClick}
|
||||
member={member}
|
||||
colored={true}
|
||||
emphasizeDisplayName={true}
|
||||
/>
|
||||
);
|
||||
} }
|
||||
</RoomContext.Consumer>;
|
||||
}
|
||||
return mxEvent.getContent().msgtype !== MsgType.Emote
|
||||
? <DisambiguatedProfile
|
||||
fallbackName={mxEvent.getSender() ?? ""}
|
||||
onClick={onClick}
|
||||
member={member}
|
||||
colored={true}
|
||||
emphasizeDisplayName={true}
|
||||
/>
|
||||
: null;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue