Skip to content

Commit 7270872

Browse files
committed
Fix a bug where mentionedMessageTemplate is being set even when the message is not a mentioned message
1 parent 6fa3789 commit 7270872

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

src/modules/Message/components/TextFragment/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ export default function TextFragment({
5050
: 'sendbird-label--color-onbackground-1'
5151
}
5252
href={asSafeURL(groups[2])}
53+
target="_blank"
54+
rel="noopener noreferrer"
5355
>
5456
<TextFragment tokens={tokenizeMarkdown({ messageText: groups[1] })}/>
5557
</a>

src/ui/MessageInput/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,9 @@ const MessageInput = React.forwardRef<HTMLInputElement, MessageInputProps>((prop
349349
try {
350350
const textField = internalRef?.current;
351351
if (!isEdit && textField?.textContent) {
352-
const { messageText, mentionTemplate } = extractTextAndMentions(textField.childNodes);
352+
const { messageText, mentionTemplate, isMentionedMessage } = extractTextAndMentions(textField.childNodes);
353353
const params = { message: messageText, mentionTemplate };
354+
if (!isMentionedMessage) params.mentionTemplate = '';
354355
onSendMessage(params);
355356
resetInput(internalRef);
356357
/**

src/ui/MessageInput/utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ function isHTMLElement(node: ChildNode): node is HTMLElement {
3434
export function extractTextAndMentions(childNodes: NodeListOf<ChildNode>) {
3535
let messageText = '';
3636
let mentionTemplate = '';
37+
let isMentionedMessage = false;
3738
childNodes.forEach((node) => {
3839
if (isHTMLElement(node) && node.nodeName === NodeNames.Span) {
3940
const { innerText, dataset = {} } = node;
4041
const { userid = '' } = dataset;
42+
if (userid) isMentionedMessage = true;
4143
messageText += innerText;
4244
mentionTemplate += `${USER_MENTION_TEMP_CHAR}{${userid}}`;
4345
} else if (isHTMLElement(node) && node.nodeName === NodeNames.Br) {
@@ -53,5 +55,5 @@ export function extractTextAndMentions(childNodes: NodeListOf<ChildNode>) {
5355
mentionTemplate += textContent;
5456
}
5557
});
56-
return { messageText, mentionTemplate };
58+
return { messageText, mentionTemplate, isMentionedMessage };
5759
}

0 commit comments

Comments
 (0)