Fixed display at least one injected sponsored message.

This commit is contained in:
23rd 2024-12-20 15:53:35 +03:00
parent 8060691f3d
commit aa1f8cfb8f

View file

@ -160,6 +160,7 @@ void SponsoredMessages::inject(
return (*blockIt)->messages; return (*blockIt)->messages;
}; };
auto lastViewIt = ranges::find(messages(), lastView, &ViewPtr::get); auto lastViewIt = ranges::find(messages(), lastView, &ViewPtr::get);
auto appendAtLeastToEnd = false;
while ((summaryBetween < list.postsBetween) while ((summaryBetween < list.postsBetween)
|| (summaryHeight < betweenHeight)) { || (summaryHeight < betweenHeight)) {
lastViewIt++; lastViewIt++;
@ -168,6 +169,10 @@ void SponsoredMessages::inject(
if (blockIt != end(history->blocks)) { if (blockIt != end(history->blocks)) {
lastViewIt = begin(messages()); lastViewIt = begin(messages());
} else { } else {
if (!list.injectedCount) {
appendAtLeastToEnd = true;
break;
}
return; return;
} }
} }
@ -182,6 +187,12 @@ void SponsoredMessages::inject(
entryIt->itemFullId = FullMsgId( entryIt->itemFullId = FullMsgId(
history->peer->id, history->peer->id,
_session->data().nextLocalMessageId()); _session->data().nextLocalMessageId());
if (appendAtLeastToEnd) {
entryIt->item.reset(history->addSponsoredMessage(
entryIt->itemFullId.msg,
entryIt->sponsored.from,
entryIt->sponsored.textWithEntities));
} else {
const auto makedMessage = history->makeMessage( const auto makedMessage = history->makeMessage(
entryIt->itemFullId.msg, entryIt->itemFullId.msg,
entryIt->sponsored.from, entryIt->sponsored.from,
@ -193,6 +204,7 @@ void SponsoredMessages::inject(
std::distance(begin(history->blocks), blockIt), std::distance(begin(history->blocks), blockIt),
std::distance(begin(messages()), lastViewIt) + 1); std::distance(begin(messages()), lastViewIt) + 1);
messages().back().get()->setPendingResize(); messages().back().get()->setPendingResize();
}
list.injectedCount++; list.injectedCount++;
} }
} }