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({ export async function pinMessage({
chat, messageId, isUnpin, isOneSide, isSilent, chat, messageId, isUnpin, isOneSide, isSilent,
}: { chat: ApiChat; messageId: number; isUnpin: boolean; isOneSide?: boolean; isSilent?: boolean }) { }: { 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), peer: buildInputPeer(chat.id, chat.accessHash),
id: messageId, id: messageId,
...(isUnpin && { unpin: true }), ...(isUnpin && { unpin: true }),
...(isOneSide && { pmOneside: true }), ...(isOneSide && { pmOneside: true }),
...(isSilent && { silent: 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 }) { export async function unpinAllMessages({ chat, threadId }: { chat: ApiChat; threadId?: number }) {

View File

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