diff --git a/src/app/molecules/message/Message.jsx b/src/app/molecules/message/Message.jsx
index 647b672..1b4b3b6 100644
--- a/src/app/molecules/message/Message.jsx
+++ b/src/app/molecules/message/Message.jsx
@@ -86,9 +86,7 @@ MessageHeader.propTypes = {
time: PropTypes.string.isRequired,
};
-function MessageReply({
- userId, name, color, content,
-}) {
+function MessageReply({ name, color, content }) {
return (
@@ -101,7 +99,6 @@ function MessageReply({
}
MessageReply.propTypes = {
- userId: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
color: PropTypes.string.isRequired,
content: PropTypes.string.isRequired,
diff --git a/src/app/organisms/channel/ChannelViewContent.jsx b/src/app/organisms/channel/ChannelViewContent.jsx
index fa21897..276f55e 100644
--- a/src/app/organisms/channel/ChannelViewContent.jsx
+++ b/src/app/organisms/channel/ChannelViewContent.jsx
@@ -205,13 +205,12 @@ function genMessage(roomId, prevMEvent, mEvent, roomTimeline, viewEvent) {
if (isReply) {
const parsedContent = parseReply(content);
-
if (parsedContent !== null) {
- const username = getUsername(parsedContent.userId);
+ const c = roomTimeline.room.currentState;
+ const ID = parsedContent.userId || c.getUserIdsWithDisplayName(parsedContent.displayName)[0];
reply = {
- userId: parsedContent.userId,
- color: colorMXID(parsedContent.userId),
- to: username,
+ color: colorMXID(ID || parsedContent.displayName),
+ to: parsedContent.displayName || getUsername(parsedContent.userId),
content: parsedContent.replyContent,
};
content = parsedContent.content;
@@ -284,7 +283,6 @@ function genMessage(roomId, prevMEvent, mEvent, roomTimeline, viewEvent) {
);
const userReply = reply === null ? null : (
') !== 0) return null;
- let content = rawContent.slice(rawContent.indexOf('@'));
- const userId = content.slice(0, content.indexOf('>'));
+ let content = rawContent.slice(rawContent.indexOf('<') + 1);
+ const user = content.slice(0, content.indexOf('>'));
content = content.slice(content.indexOf('>') + 2);
const replyContent = content.slice(0, content.indexOf('\n\n'));
content = content.slice(content.indexOf('\n\n') + 2);
- if (userId === '') return null;
+ if (user === '') return null;
+
+ const isUserId = user.match(/^@.+:.+/);
return {
- userId,
+ userId: isUserId ? user : null,
+ displayName: isUserId ? null : user,
replyContent,
content,
};