From 78def16ced5096f930f8d88adb00fe125cf80e73 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 29 Mar 2021 19:53:55 +0400 Subject: Fix showing comments from the beginning. --- Telegram/SourceFiles/history/history_message.cpp | 14 ++++++++++++-- .../SourceFiles/window/window_session_controller.cpp | 20 ++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 6e01d56814..c79bc2ae69 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -857,7 +857,12 @@ MsgId HistoryMessage::computeRepliesInboxReadTillFull() const { ? history()->owner().historyLoaded( peerFromChannel(views->commentsMegagroupId)) : history().get(); - return group ? std::max(local, group->inboxReadTillId()) : local; + if (const auto megagroup = group->peer->asChannel()) { + if (megagroup->amIn()) { + return std::max(local, group->inboxReadTillId()); + } + } + return local; } MsgId HistoryMessage::repliesOutboxReadTill() const { @@ -891,7 +896,12 @@ MsgId HistoryMessage::computeRepliesOutboxReadTillFull() const { ? history()->owner().historyLoaded( peerFromChannel(views->commentsMegagroupId)) : history().get(); - return group ? std::max(local, group->outboxReadTillId()) : local; + if (const auto megagroup = group->peer->asChannel()) { + if (megagroup->amIn()) { + return std::max(local, group->outboxReadTillId()); + } + } + return local; } void HistoryMessage::setRepliesMaxId(MsgId maxId) { diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index ecdf58d53e..4d37527dd8 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -354,24 +354,20 @@ void SessionNavigation::showRepliesForMessage( if (const auto maxId = data.vmax_id()) { item->setRepliesMaxId(maxId->v); } - if (const auto readTill = data.vread_inbox_max_id()) { - item->setRepliesInboxReadTill(readTill->v); - } - if (const auto readTill = data.vread_outbox_max_id()) { - item->setRepliesOutboxReadTill(readTill->v); - } + item->setRepliesInboxReadTill( + data.vread_inbox_max_id().value_or_empty()); + item->setRepliesOutboxReadTill( + data.vread_outbox_max_id().value_or_empty()); const auto post = _session->data().message(channelId, rootId); if (post && item->history()->channelId() != channelId) { post->setCommentsItemId(item->fullId()); if (const auto maxId = data.vmax_id()) { post->setRepliesMaxId(maxId->v); } - if (const auto readTill = data.vread_inbox_max_id()) { - post->setRepliesInboxReadTill(readTill->v); - } - if (const auto readTill = data.vread_outbox_max_id()) { - post->setRepliesOutboxReadTill(readTill->v); - } + post->setRepliesInboxReadTill( + data.vread_inbox_max_id().value_or_empty()); + post->setRepliesOutboxReadTill( + data.vread_outbox_max_id().value_or_empty()); } showSection(std::make_shared( item, -- cgit v1.2.3