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 (msgsigned->isElided) {
if (msgsigned->isElided && !msgsigned->isAnonymousRank) {
dateText += '\n' + tr::lng_signed_author(tr::now, lt_user, msgsigned->author);
}
}

View File

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

View File

@ -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);

View File

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

View File

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

View File

@ -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<HistoryMessageSigned>()) {
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<HistoryMessageSigned>()) {
if (const auto msgsigned = item->Get<HistoryMessageSigned>()
; 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<HistoryMessageSigned>()) {
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<HistoryMessageSigned>()) {
if (const auto msgsigned = item->Get<HistoryMessageSigned>()
; msgsigned && !msgsigned->isAnonymousRank) {
item->_timeWidth = msgsigned->maxWidth();
} else if (const auto edited = displayedEditBadge()) {
item->_timeWidth = edited->maxWidth();

View File

@ -137,7 +137,8 @@ QSize Contact::countOptimalSize() {
auto minHeight = 0;
if (_userId) {
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>()) {
minHeight += st::msgDateFont->height - st::msgDateDelta.y();
}

View File

@ -200,7 +200,8 @@ QSize Document::countOptimalSize() {
} else {
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>()
|| _parent->displayEditedBadge())) {
minHeight += st::msgDateFont->height - st::msgDateDelta.y();