From f3647d7f8c7fbe44b7663ef6a3dc56b25953cc03 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 1 Sep 2023 15:20:55 +0400 Subject: [PATCH] Show saved stories / current stories in channels. --- Telegram/SourceFiles/info/media/info_media_buttons.h | 6 +++--- .../info/profile/info_profile_inner_widget.cpp | 11 ++++++----- .../SourceFiles/info/profile/info_profile_widget.cpp | 6 ++---- .../SourceFiles/window/window_session_controller.cpp | 2 +- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Telegram/SourceFiles/info/media/info_media_buttons.h b/Telegram/SourceFiles/info/media/info_media_buttons.h index 9d3693280..c4d3c5fe6 100644 --- a/Telegram/SourceFiles/info/media/info_media_buttons.h +++ b/Telegram/SourceFiles/info/media/info_media_buttons.h @@ -129,10 +129,10 @@ inline auto AddCommonGroupsButton( inline auto AddStoriesButton( Ui::VerticalLayout *parent, not_null navigation, - not_null user, + not_null peer, Ui::MultiSlideTracker &tracker) { auto count = rpl::single(0) | rpl::then(Data::SavedStoriesIds( - user, + peer, ServerMaxStoryId - 1, 0 ) | rpl::map([](const Data::StoriesIdsSlice &slice) { @@ -146,7 +146,7 @@ inline auto AddStoriesButton( }, tracker)->entity(); result->addClickHandler([=] { - navigation->showSection(Info::Stories::Make(user)); + navigation->showSection(Info::Stories::Make(peer)); }); return result; }; diff --git a/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp b/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp index 642b4d422..24c59e8c2 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp @@ -187,12 +187,15 @@ object_ptr InnerWidget::setupSharedMedia( st::infoSharedMediaButtonIconPosition); }; auto addStoriesButton = [&]( - not_null user, + not_null peer, const style::icon &icon) { + if (peer->isChat()) { + return; + } auto result = Media::AddStoriesButton( content, _controller, - user, + peer, tracker); object_ptr( result, @@ -200,9 +203,7 @@ object_ptr InnerWidget::setupSharedMedia( st::infoSharedMediaButtonIconPosition); }; - if (auto user = _peer->asUser()) { - addStoriesButton(user, st::infoIconMediaStories); - } + addStoriesButton(_peer, st::infoIconMediaStories); addMediaButton(MediaType::Photo, st::infoIconMediaPhoto); addMediaButton(MediaType::Video, st::infoIconMediaVideo); addMediaButton(MediaType::File, st::infoIconMediaFile); diff --git a/Telegram/SourceFiles/info/profile/info_profile_widget.cpp b/Telegram/SourceFiles/info/profile/info_profile_widget.cpp index 40b374ef1..d1209a246 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_widget.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_widget.cpp @@ -110,10 +110,8 @@ rpl::producer Widget::title() { rpl::producer Widget::titleStories() { const auto peer = controller()->key().peer(); - if (const auto user = peer->asUser()) { - if (!user->isBot()) { - return Dialogs::Stories::LastForPeer(user); - } + if (peer && !peer->isChat()) { + return Dialogs::Stories::LastForPeer(peer); } return nullptr; } diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index d67e7d8e0..61bc472d9 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -2218,7 +2218,7 @@ bool SessionController::openSharedStory(HistoryItem *item) { bool SessionController::openFakeItemStory( FullMsgId fakeItemId, const Data::StoriesContext *stories) { - if (!peerIsUser(fakeItemId.peer) + if (peerIsChat(fakeItemId.peer) || !IsStoryMsgId(fakeItemId.msg)) { return false; }