Show admin rank for anonymous posts.

This commit is contained in:
John Preston 2020-10-01 12:57:03 +03:00
parent 874e5e0a61
commit bd1a46252d
8 changed files with 28 additions and 11 deletions

View File

@ -3309,7 +3309,7 @@ QString HistoryInner::tooltipText() const {
} }
} }
if (const auto msgsigned = view->data()->Get<HistoryMessageSigned>()) { if (const auto msgsigned = view->data()->Get<HistoryMessageSigned>()) {
if (msgsigned->isElided) { if (msgsigned->isElided && !msgsigned->isAnonymousRank) {
dateText += '\n' + tr::lng_signed_author(tr::now, lt_user, msgsigned->author); dateText += '\n' + tr::lng_signed_author(tr::now, lt_user, msgsigned->author);
} }
} }

View File

@ -717,8 +717,10 @@ QString HistoryItem::authorOriginal() const {
if (const auto forwarded = Get<HistoryMessageForwarded>()) { if (const auto forwarded = Get<HistoryMessageForwarded>()) {
return forwarded->originalAuthor; return forwarded->originalAuthor;
} else if (const auto msgsigned = Get<HistoryMessageSigned>()) { } else if (const auto msgsigned = Get<HistoryMessageSigned>()) {
if (!msgsigned->isAnonymousRank) {
return msgsigned->author; return msgsigned->author;
} }
}
return QString(); return QString();
} }

View File

@ -73,6 +73,8 @@ void HistoryMessageVia::resize(int32 availw) const {
} }
void HistoryMessageSigned::refresh(const QString &date) { void HistoryMessageSigned::refresh(const QString &date) {
Expects(!isAnonymousRank);
auto name = author; auto name = author;
const auto time = qsl(", ") + date; const auto time = qsl(", ") + date;
const auto timew = st::msgDateFont->width(time); const auto timew = st::msgDateFont->width(time);

View File

@ -56,9 +56,10 @@ struct HistoryMessageSigned : public RuntimeComponent<HistoryMessageSigned, Hist
void refresh(const QString &date); void refresh(const QString &date);
int maxWidth() const; int maxWidth() const;
bool isElided = false;
QString author; QString author;
Ui::Text::String signature; Ui::Text::String signature;
bool isElided = false;
bool isAnonymousRank = false;
}; };
struct HistoryMessageEdited : public RuntimeComponent<HistoryMessageEdited, HistoryItem> { struct HistoryMessageEdited : public RuntimeComponent<HistoryMessageEdited, HistoryItem> {

View File

@ -1049,6 +1049,7 @@ void HistoryMessage::createComponents(const CreateConfig &config) {
} }
if (const auto msgsigned = Get<HistoryMessageSigned>()) { if (const auto msgsigned = Get<HistoryMessageSigned>()) {
msgsigned->author = config.author; msgsigned->author = config.author;
msgsigned->isAnonymousRank = author()->isMegagroup();
} }
setupForwardedComponent(config); setupForwardedComponent(config);
if (const auto markup = Get<HistoryMessageReplyMarkup>()) { if (const auto markup = Get<HistoryMessageReplyMarkup>()) {

View File

@ -247,6 +247,11 @@ void Message::refreshRightBadge() {
return (delegate()->elementContext() == Context::Replies) return (delegate()->elementContext() == Context::Replies)
? QString() ? QString()
: tr::lng_channel_badge(tr::now); : tr::lng_channel_badge(tr::now);
} else if (data()->author()->isMegagroup()) {
if (const auto msgsigned = data()->Get<HistoryMessageSigned>()) {
Assert(msgsigned->isAnonymousRank);
return msgsigned->author;
}
} }
const auto channel = data()->history()->peer->asMegagroup(); const auto channel = data()->history()->peer->asMegagroup();
const auto user = data()->author()->asUser(); const auto user = data()->author()->asUser();
@ -1702,7 +1707,8 @@ void Message::drawInfo(
} }
dateX += timeLeft(); dateX += timeLeft();
if (const auto msgsigned = item->Get<HistoryMessageSigned>()) { if (const auto msgsigned = item->Get<HistoryMessageSigned>()
; msgsigned && !msgsigned->isAnonymousRank) {
msgsigned->signature.drawElided(p, dateX, dateY, item->_timeWidth); msgsigned->signature.drawElided(p, dateX, dateY, item->_timeWidth);
} else if (const auto edited = displayedEditBadge()) { } else if (const auto edited = displayedEditBadge()) {
edited->text.drawElided(p, dateX, dateY, item->_timeWidth); edited->text.drawElided(p, dateX, dateY, item->_timeWidth);
@ -2517,17 +2523,20 @@ void Message::refreshEditedBadge() {
edited->refresh(dateText, editDate != 0); edited->refresh(dateText, editDate != 0);
} }
if (const auto msgsigned = item->Get<HistoryMessageSigned>()) { if (const auto msgsigned = item->Get<HistoryMessageSigned>()) {
if (!msgsigned->isAnonymousRank) {
const auto text = (!edited || !editDate) const auto text = (!edited || !editDate)
? dateText ? dateText
: edited->text.toString(); : edited->text.toString();
msgsigned->refresh(text); msgsigned->refresh(text);
} }
}
initTime(); initTime();
} }
void Message::initTime() { void Message::initTime() {
const auto item = message(); const auto item = message();
if (const auto msgsigned = item->Get<HistoryMessageSigned>()) { if (const auto msgsigned = item->Get<HistoryMessageSigned>()
; msgsigned && !msgsigned->isAnonymousRank) {
item->_timeWidth = msgsigned->maxWidth(); item->_timeWidth = msgsigned->maxWidth();
} else if (const auto edited = displayedEditBadge()) { } else if (const auto edited = displayedEditBadge()) {
item->_timeWidth = edited->maxWidth(); item->_timeWidth = edited->maxWidth();

View File

@ -137,7 +137,8 @@ QSize Contact::countOptimalSize() {
auto minHeight = 0; auto minHeight = 0;
if (_userId) { if (_userId) {
minHeight = st::msgFileThumbPadding.top() + st::msgFileThumbSize + st::msgFileThumbPadding.bottom(); minHeight = st::msgFileThumbPadding.top() + st::msgFileThumbSize + st::msgFileThumbPadding.bottom();
if (item->Has<HistoryMessageSigned>() const auto msgsigned = item->Get<HistoryMessageSigned>();
if ((msgsigned && !msgsigned->isAnonymousRank)
|| item->Has<HistoryMessageViews>()) { || item->Has<HistoryMessageViews>()) {
minHeight += st::msgDateFont->height - st::msgDateDelta.y(); minHeight += st::msgDateFont->height - st::msgDateDelta.y();
} }

View File

@ -200,7 +200,8 @@ QSize Document::countOptimalSize() {
} else { } else {
minHeight = st::msgFilePadding.top() + st::msgFileSize + st::msgFilePadding.bottom(); minHeight = st::msgFilePadding.top() + st::msgFileSize + st::msgFilePadding.bottom();
} }
if (!captioned && (item->Has<HistoryMessageSigned>() const auto msgsigned = item->Get<HistoryMessageSigned>();
if (!captioned && ((msgsigned && !msgsigned->isAnonymousRank)
|| item->Has<HistoryMessageViews>() || item->Has<HistoryMessageViews>()
|| _parent->displayEditedBadge())) { || _parent->displayEditedBadge())) {
minHeight += st::msgDateFont->height - st::msgDateDelta.y(); minHeight += st::msgDateFont->height - st::msgDateDelta.y();