Action Message: Fix displaying new messages (#3113)
This commit is contained in:
parent
0d782c24e1
commit
894eb66e7e
@ -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 }) {
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user