Added api flag support of userpic display for sponsored messages.
This commit is contained in:
parent
dc8b693f1d
commit
9ddbc75638
|
@ -164,6 +164,7 @@ void SponsoredMessages::append(
|
||||||
.isExactPost = exactPost,
|
.isExactPost = exactPost,
|
||||||
.isRecommended = data.is_recommended(),
|
.isRecommended = data.is_recommended(),
|
||||||
.userpic = { .location = peer->userpicLocation() },
|
.userpic = { .location = peer->userpicLocation() },
|
||||||
|
.isForceUserpicDisplay = data.is_show_peer_photo(),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
const auto from = [&]() -> SponsoredFrom {
|
const auto from = [&]() -> SponsoredFrom {
|
||||||
|
@ -195,6 +196,7 @@ void SponsoredMessages::append(
|
||||||
.isChannel = data.is_channel(),
|
.isChannel = data.is_channel(),
|
||||||
.isPublic = data.is_public(),
|
.isPublic = data.is_public(),
|
||||||
.userpic = std::move(userpic),
|
.userpic = std::move(userpic),
|
||||||
|
.isForceUserpicDisplay = message.data().is_show_peer_photo(),
|
||||||
};
|
};
|
||||||
}, [&](const MTPDchatInviteAlready &data) {
|
}, [&](const MTPDchatInviteAlready &data) {
|
||||||
const auto chat = _session->data().processChat(data.vchat());
|
const auto chat = _session->data().processChat(data.vchat());
|
||||||
|
|
|
@ -32,6 +32,7 @@ struct SponsoredFrom {
|
||||||
bool isExactPost = false;
|
bool isExactPost = false;
|
||||||
bool isRecommended = false;
|
bool isRecommended = false;
|
||||||
ImageWithLocation userpic;
|
ImageWithLocation userpic;
|
||||||
|
bool isForceUserpicDisplay = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SponsoredMessage {
|
struct SponsoredMessage {
|
||||||
|
|
|
@ -703,6 +703,8 @@ bool HistoryInner::canHaveFromUserpics() const {
|
||||||
&& !_peer->isRepliesChat()
|
&& !_peer->isRepliesChat()
|
||||||
&& !_isChatWide) {
|
&& !_isChatWide) {
|
||||||
return false;
|
return false;
|
||||||
|
} else if (_canHaveFromUserpicsSponsored) {
|
||||||
|
return true;
|
||||||
} else if (_peer->isChannel() && !_peer->isMegagroup()) {
|
} else if (_peer->isChannel() && !_peer->isMegagroup()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -999,8 +1001,7 @@ void HistoryInner::paintEvent(QPaintEvent *e) {
|
||||||
: yShown(top + height / 2);
|
: yShown(top + height / 2);
|
||||||
if (markShown) {
|
if (markShown) {
|
||||||
if (isSponsored) {
|
if (isSponsored) {
|
||||||
session().data().sponsoredMessages().view(
|
session().data().sponsoredMessages().view(item->fullId());
|
||||||
item->fullId());
|
|
||||||
} else if (isUnread) {
|
} else if (isUnread) {
|
||||||
readTill = item;
|
readTill = item;
|
||||||
}
|
}
|
||||||
|
@ -3789,6 +3790,10 @@ void HistoryInner::clearChooseReportReason() {
|
||||||
_chooseForReportReason = std::nullopt;
|
_chooseForReportReason = std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HistoryInner::setCanHaveFromUserpicsSponsored(bool value) {
|
||||||
|
_canHaveFromUserpicsSponsored = value;
|
||||||
|
}
|
||||||
|
|
||||||
// -1 if should not be visible, -2 if bad history()
|
// -1 if should not be visible, -2 if bad history()
|
||||||
int HistoryInner::itemTop(const HistoryItem *item) const {
|
int HistoryInner::itemTop(const HistoryItem *item) const {
|
||||||
if (!item) {
|
if (!item) {
|
||||||
|
|
|
@ -175,6 +175,8 @@ public:
|
||||||
void setChooseReportReason(Ui::ReportReason reason);
|
void setChooseReportReason(Ui::ReportReason reason);
|
||||||
void clearChooseReportReason();
|
void clearChooseReportReason();
|
||||||
|
|
||||||
|
void setCanHaveFromUserpicsSponsored(bool value);
|
||||||
|
|
||||||
// -1 if should not be visible, -2 if bad history()
|
// -1 if should not be visible, -2 if bad history()
|
||||||
int itemTop(const HistoryItem *item) const;
|
int itemTop(const HistoryItem *item) const;
|
||||||
int itemTop(const Element *view) const;
|
int itemTop(const Element *view) const;
|
||||||
|
@ -473,6 +475,7 @@ private:
|
||||||
bool _pressWasInactive = false;
|
bool _pressWasInactive = false;
|
||||||
bool _recountedAfterPendingResizedItems = false;
|
bool _recountedAfterPendingResizedItems = false;
|
||||||
bool _useCornerReaction = false;
|
bool _useCornerReaction = false;
|
||||||
|
bool _canHaveFromUserpicsSponsored = false;
|
||||||
|
|
||||||
QPoint _trippleClickPoint;
|
QPoint _trippleClickPoint;
|
||||||
base::Timer _trippleClickTimer;
|
base::Timer _trippleClickTimer;
|
||||||
|
|
|
@ -134,6 +134,7 @@ struct HistoryMessageSponsored : public RuntimeComponent<HistoryMessageSponsored
|
||||||
std::unique_ptr<HiddenSenderInfo> sender;
|
std::unique_ptr<HiddenSenderInfo> sender;
|
||||||
Type type = Type::User;
|
Type type = Type::User;
|
||||||
bool recommended = false;
|
bool recommended = false;
|
||||||
|
bool isForceUserpicDisplay = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ReplyToMessagePointer final {
|
class ReplyToMessagePointer final {
|
||||||
|
|
|
@ -1741,6 +1741,7 @@ void HistoryMessage::setSponsoredFrom(const Data::SponsoredFrom &from) {
|
||||||
from.title,
|
from.title,
|
||||||
false);
|
false);
|
||||||
sponsored->recommended = from.isRecommended;
|
sponsored->recommended = from.isRecommended;
|
||||||
|
sponsored->isForceUserpicDisplay = from.isForceUserpicDisplay;
|
||||||
if (from.userpic.location.valid()) {
|
if (from.userpic.location.valid()) {
|
||||||
sponsored->sender->customUserpic.set(
|
sponsored->sender->customUserpic.set(
|
||||||
&history()->session(),
|
&history()->session(),
|
||||||
|
|
|
@ -297,6 +297,9 @@ HistoryWidget::HistoryWidget(
|
||||||
if (_history
|
if (_history
|
||||||
&& _history->loadedAtBottom()
|
&& _history->loadedAtBottom()
|
||||||
&& session().data().sponsoredMessages().append(_history)) {
|
&& session().data().sponsoredMessages().append(_history)) {
|
||||||
|
if (_list) {
|
||||||
|
_list->setCanHaveFromUserpicsSponsored(true);
|
||||||
|
}
|
||||||
_scroll->contentAdded();
|
_scroll->contentAdded();
|
||||||
}
|
}
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
|
|
@ -1573,8 +1573,15 @@ bool Message::hasFromPhoto() const {
|
||||||
case Context::Replies: {
|
case Context::Replies: {
|
||||||
const auto item = message();
|
const auto item = message();
|
||||||
if (item->isPost()) {
|
if (item->isPost()) {
|
||||||
return item->isSponsored()
|
if (item->isSponsored()) {
|
||||||
&& item->history()->peer->isMegagroup();
|
if (item->history()->peer->isMegagroup()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (const auto info = item->Get<HistoryMessageSponsored>()) {
|
||||||
|
return info->isForceUserpicDisplay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
if (item->isEmpty()
|
if (item->isEmpty()
|
||||||
|| (context() == Context::Replies && item->isDiscussionPost())) {
|
|| (context() == Context::Replies && item->isDiscussionPost())) {
|
||||||
|
|
Loading…
Reference in New Issue