From bd1a46252d2adf514526c35711b46487eab695f9 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 1 Oct 2020 12:57:03 +0300 Subject: [PATCH] Show admin rank for anonymous posts. --- .../history/history_inner_widget.cpp | 2 +- Telegram/SourceFiles/history/history_item.cpp | 4 +++- .../history/history_item_components.cpp | 2 ++ .../history/history_item_components.h | 3 ++- .../SourceFiles/history/history_message.cpp | 1 + .../history/view/history_view_message.cpp | 21 +++++++++++++------ .../view/media/history_view_contact.cpp | 3 ++- .../view/media/history_view_document.cpp | 3 ++- 8 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 80390a84dc..36213e2824 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -3309,7 +3309,7 @@ QString HistoryInner::tooltipText() const { } } if (const auto msgsigned = view->data()->Get()) { - if (msgsigned->isElided) { + if (msgsigned->isElided && !msgsigned->isAnonymousRank) { dateText += '\n' + tr::lng_signed_author(tr::now, lt_user, msgsigned->author); } } diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 845de23f6b..6fcc2b05ed 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -717,7 +717,9 @@ QString HistoryItem::authorOriginal() const { if (const auto forwarded = Get()) { return forwarded->originalAuthor; } else if (const auto msgsigned = Get()) { - return msgsigned->author; + if (!msgsigned->isAnonymousRank) { + return msgsigned->author; + } } return QString(); } diff --git a/Telegram/SourceFiles/history/history_item_components.cpp b/Telegram/SourceFiles/history/history_item_components.cpp index 3a9fdb3c79..817ef5aec3 100644 --- a/Telegram/SourceFiles/history/history_item_components.cpp +++ b/Telegram/SourceFiles/history/history_item_components.cpp @@ -73,6 +73,8 @@ void HistoryMessageVia::resize(int32 availw) const { } void HistoryMessageSigned::refresh(const QString &date) { + Expects(!isAnonymousRank); + auto name = author; const auto time = qsl(", ") + date; const auto timew = st::msgDateFont->width(time); diff --git a/Telegram/SourceFiles/history/history_item_components.h b/Telegram/SourceFiles/history/history_item_components.h index 24bcced774..5e720fb204 100644 --- a/Telegram/SourceFiles/history/history_item_components.h +++ b/Telegram/SourceFiles/history/history_item_components.h @@ -56,9 +56,10 @@ struct HistoryMessageSigned : public RuntimeComponent { diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 70615b9d1b..2d28e0678c 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -1049,6 +1049,7 @@ void HistoryMessage::createComponents(const CreateConfig &config) { } if (const auto msgsigned = Get()) { msgsigned->author = config.author; + msgsigned->isAnonymousRank = author()->isMegagroup(); } setupForwardedComponent(config); if (const auto markup = Get()) { diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp index cd1ea084f0..a03055ce42 100644 --- a/Telegram/SourceFiles/history/view/history_view_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_message.cpp @@ -247,6 +247,11 @@ void Message::refreshRightBadge() { return (delegate()->elementContext() == Context::Replies) ? QString() : tr::lng_channel_badge(tr::now); + } else if (data()->author()->isMegagroup()) { + if (const auto msgsigned = data()->Get()) { + Assert(msgsigned->isAnonymousRank); + return msgsigned->author; + } } const auto channel = data()->history()->peer->asMegagroup(); const auto user = data()->author()->asUser(); @@ -1702,7 +1707,8 @@ void Message::drawInfo( } dateX += timeLeft(); - if (const auto msgsigned = item->Get()) { + if (const auto msgsigned = item->Get() + ; msgsigned && !msgsigned->isAnonymousRank) { msgsigned->signature.drawElided(p, dateX, dateY, item->_timeWidth); } else if (const auto edited = displayedEditBadge()) { edited->text.drawElided(p, dateX, dateY, item->_timeWidth); @@ -2517,17 +2523,20 @@ void Message::refreshEditedBadge() { edited->refresh(dateText, editDate != 0); } if (const auto msgsigned = item->Get()) { - const auto text = (!edited || !editDate) - ? dateText - : edited->text.toString(); - msgsigned->refresh(text); + if (!msgsigned->isAnonymousRank) { + const auto text = (!edited || !editDate) + ? dateText + : edited->text.toString(); + msgsigned->refresh(text); + } } initTime(); } void Message::initTime() { const auto item = message(); - if (const auto msgsigned = item->Get()) { + if (const auto msgsigned = item->Get() + ; msgsigned && !msgsigned->isAnonymousRank) { item->_timeWidth = msgsigned->maxWidth(); } else if (const auto edited = displayedEditBadge()) { item->_timeWidth = edited->maxWidth(); diff --git a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp index 5256e0fc7a..e563516e8a 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp @@ -137,7 +137,8 @@ QSize Contact::countOptimalSize() { auto minHeight = 0; if (_userId) { minHeight = st::msgFileThumbPadding.top() + st::msgFileThumbSize + st::msgFileThumbPadding.bottom(); - if (item->Has() + const auto msgsigned = item->Get(); + if ((msgsigned && !msgsigned->isAnonymousRank) || item->Has()) { minHeight += st::msgDateFont->height - st::msgDateDelta.y(); } diff --git a/Telegram/SourceFiles/history/view/media/history_view_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_document.cpp index 68d47b0639..113fad20f7 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_document.cpp @@ -200,7 +200,8 @@ QSize Document::countOptimalSize() { } else { minHeight = st::msgFilePadding.top() + st::msgFileSize + st::msgFilePadding.bottom(); } - if (!captioned && (item->Has() + const auto msgsigned = item->Get(); + if (!captioned && ((msgsigned && !msgsigned->isAnonymousRank) || item->Has() || _parent->displayEditedBadge())) { minHeight += st::msgDateFont->height - st::msgDateDelta.y();