Copy Messages: Fix message sender title extraction (#3368)

This commit is contained in:
Alexander Zinchuk 2023-07-05 13:14:05 +02:00
parent 10d4e6b9fa
commit f9a789a2cc

View File

@ -50,7 +50,7 @@ import { getServerTime } from '../../../util/serverTime';
import versionNotification from '../../../versionNotification.txt';
import parseMessageInput from '../../../util/parseMessageInput';
import { getMessageSummaryText, getSenderTitle } from '../../helpers';
import { getMessageSummaryText, getSenderTitle, isChatChannel } from '../../helpers';
import * as langProvider from '../../../util/langProvider';
import { copyHtmlToClipboard } from '../../../util/clipboard';
import { renderMessageSummaryHtml } from '../../helpers/renderMessageSummaryHtml';
@ -814,31 +814,32 @@ function copyTextForMessages(global: GlobalState, chatId: string, messageIds: nu
const { type: messageListType, threadId } = selectCurrentMessageList(global) || {};
const lang = langProvider.translate;
const chat = selectChat(global, chatId);
const chatMessages = messageListType === 'scheduled'
? selectChatScheduledMessages(global, chatId)
: selectChatMessages(global, chatId);
if (!chatMessages || !threadId) return;
if (!chat || !chatMessages || !threadId) return;
const messages = messageIds
.map((id) => chatMessages[id])
.filter((message) => selectAllowedMessageActions(global, message, threadId).canCopy)
.sort((message1, message2) => message1.id - message2.id);
const result = messages.reduce((acc, message) => {
const sender = selectSender(global, message);
const resultHtml: string[] = [];
const resultText: string[] = [];
acc.push(`> ${sender ? getSenderTitle(lang, sender) : ''}:`);
acc.push(`${renderMessageSummaryHtml(lang, message)}\n`);
messages.forEach((message) => {
const sender = isChatChannel(chat) ? chat : selectSender(global, message);
const senderTitle = `> ${sender ? getSenderTitle(lang, sender) : message.forwardInfo?.hiddenUserName || ''}:`;
return acc;
}, [] as string[]);
resultHtml.push(senderTitle);
resultHtml.push(`${renderMessageSummaryHtml(lang, message)}\n`);
const resultText = messages.reduce((acc, message) => {
const sender = selectSender(global, message);
acc.push(`> ${sender ? getSenderTitle(lang, sender) : ''}:`);
acc.push(`${getMessageSummaryText(lang, message, false, 0, true)}\n`);
resultText.push(senderTitle);
resultText.push(`${getMessageSummaryText(lang, message, false, 0, true)}\n`);
});
return acc;
}, [] as string[]);
copyHtmlToClipboard(result.join('\n'), resultText.join('\n'));
copyHtmlToClipboard(resultHtml.join('\n'), resultText.join('\n'));
}