Action Message: Fix displaying new messages (#3113)

This commit is contained in:
Alexander Zinchuk 2023-05-02 15:23:38 +04:00
parent 0d782c24e1
commit 894eb66e7e
2 changed files with 5 additions and 13 deletions

View File

@ -666,22 +666,13 @@ async function uploadMedia(localMessage: ApiMessage, attachment: ApiAttachment,
export async function pinMessage({
chat, messageId, isUnpin, isOneSide, isSilent,
}: { chat: ApiChat; messageId: number; isUnpin: boolean; isOneSide?: boolean; isSilent?: boolean }) {
const result = await invokeRequest(new GramJs.messages.UpdatePinnedMessage({
await invokeRequest(new GramJs.messages.UpdatePinnedMessage({
peer: buildInputPeer(chat.id, chat.accessHash),
id: messageId,
...(isUnpin && { unpin: true }),
...(isOneSide && { pmOneside: true }),
...(isSilent && { silent: true }),
}), undefined, undefined, true);
if (!(result instanceof GramJs.Updates)) return;
// For some reason, Telegram returns UpdateMessageID when pinning a message with a randomId that is unknown to us,
// which causes an 'updateMessage' update instead of 'newMessage'. We ignore this update.
result.updates.forEach((update) => {
if (update instanceof GramJs.UpdateMessageID) return;
updater(update);
});
}));
}
export async function unpinAllMessages({ chat, threadId }: { chat: ApiChat; threadId?: number }) {

View File

@ -199,9 +199,10 @@ export function updater(update: Update) {
message,
});
} else {
// We don't have preview for action or 'via bot' messages, so `newMessage` update here is required
const hasLocalCopy = sentMessageIds.has(message.id) && !message.viaBotId && !message.content.action;
onUpdate({
// We don't have preview for 'via bot' messages, so `newMessage` update here is required
'@type': sentMessageIds.has(message.id) && !message.viaBotId ? 'updateMessage' : 'newMessage',
'@type': hasLocalCopy ? 'updateMessage' : 'newMessage',
id: message.id,
chatId: message.chatId,
message,