From 85423a9f76ec894579746abf0ac502ab7a2443cb Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Sun, 13 Feb 2022 13:29:17 +0400 Subject: [PATCH] Respect 'private_forward_name' --- src/lib/appManagers/appMessagesManager.ts | 26 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/lib/appManagers/appMessagesManager.ts b/src/lib/appManagers/appMessagesManager.ts index b6dd6327..ab38970b 100644 --- a/src/lib/appManagers/appMessagesManager.ts +++ b/src/lib/appManagers/appMessagesManager.ts @@ -17,7 +17,7 @@ import { createPosterForVideo } from "../../helpers/files"; import { copy, deepEqual, getObjectKeysAndSort } from "../../helpers/object"; import { randomLong } from "../../helpers/random"; import { splitStringByLength, limitSymbols, escapeRegExp } from "../../helpers/string"; -import { Chat, ChatFull, Dialog as MTDialog, DialogPeer, DocumentAttribute, InputMedia, InputMessage, InputPeerNotifySettings, InputSingleMedia, Message, MessageAction, MessageEntity, MessageFwdHeader, MessageMedia, MessageReplies, MessageReplyHeader, MessagesDialogs, MessagesFilter, MessagesMessages, MethodDeclMap, NotifyPeer, PeerNotifySettings, PhotoSize, SendMessageAction, Update, Photo, Updates, ReplyMarkup, InputPeer, InputPhoto, InputDocument, InputGeoPoint, WebPage, GeoPoint, ReportReason, MessagesGetDialogs, InputChannel, InputDialogPeer, ReactionCount, MessagePeerReaction, MessagesSearchCounter } from "../../layer"; +import { Chat, ChatFull, Dialog as MTDialog, DialogPeer, DocumentAttribute, InputMedia, InputMessage, InputPeerNotifySettings, InputSingleMedia, Message, MessageAction, MessageEntity, MessageFwdHeader, MessageMedia, MessageReplies, MessageReplyHeader, MessagesDialogs, MessagesFilter, MessagesMessages, MethodDeclMap, NotifyPeer, PeerNotifySettings, PhotoSize, SendMessageAction, Update, Photo, Updates, ReplyMarkup, InputPeer, InputPhoto, InputDocument, InputGeoPoint, WebPage, GeoPoint, ReportReason, MessagesGetDialogs, InputChannel, InputDialogPeer, ReactionCount, MessagePeerReaction, MessagesSearchCounter, Peer } from "../../layer"; import { InvokeApiOptions } from "../../types"; import I18n, { FormatterArguments, i18n, join, langPack, LangPackKey, UNSUPPORTED_LANG_PACK_KEY, _i18n } from "../langPack"; import { logger, LogTypes } from "../logger"; @@ -1571,7 +1571,8 @@ export class AppMessagesManager { private generateForwardHeader(peerId: PeerId, originalMessage: Message.message) { const myId = appUsersManager.getSelf().id.toPeerId(); - if(originalMessage.fromId === myId && originalMessage.peerId === myId && !originalMessage.fwd_from) { + const fromId = originalMessage.fromId; + if(fromId === myId && originalMessage.peerId === myId && !originalMessage.fwd_from) { return; } @@ -1581,13 +1582,25 @@ export class AppMessagesManager { date: originalMessage.date }; + let isUserHidden = false; if(originalMessage.fwd_from) { fwdHeader.from_id = originalMessage.fwd_from.from_id; fwdHeader.from_name = originalMessage.fwd_from.from_name; fwdHeader.post_author = originalMessage.fwd_from.post_author; } else { - fwdHeader.from_id = appPeersManager.getOutputPeer(originalMessage.fromId); fwdHeader.post_author = originalMessage.post_author; + + if(fromId.isUser()) { + const userFull = appProfileManager.getCachedFullUser(fromId.toUserId()); + if(userFull?.private_forward_name) { + fwdHeader.from_name = userFull.private_forward_name; + isUserHidden = true; + } + } + + if(!isUserHidden) { + fwdHeader.from_id = appPeersManager.getOutputPeer(fromId); + } } if(appPeersManager.isBroadcast(originalMessage.peerId)) { @@ -1598,8 +1611,7 @@ export class AppMessagesManager { fwdHeader.channel_post = originalMessage.id; } - // * there is no way to detect whether user profile is hidden - if(peerId === myId) { + if(peerId === myId && !isUserHidden) { fwdHeader.saved_from_msg_id = originalMessage.id; fwdHeader.saved_from_peer = appPeersManager.getOutputPeer(originalMessage.peerId); } @@ -1972,6 +1984,10 @@ export class AppMessagesManager { if(!options.dropAuthor) { message.fwd_from = this.generateForwardHeader(peerId, originalMessage); keys.push('views', 'forwards'); + + if(message.fwd_from.from_name) { + message + } } if(!options.dropCaptions || !originalMessage.media) {