Show saved stories / current stories in channels.

This commit is contained in:
John Preston 2023-09-01 15:20:55 +04:00
parent f3e65181cd
commit f3647d7f8c
4 changed files with 12 additions and 13 deletions

View file

@ -129,10 +129,10 @@ inline auto AddCommonGroupsButton(
inline auto AddStoriesButton( inline auto AddStoriesButton(
Ui::VerticalLayout *parent, Ui::VerticalLayout *parent,
not_null<Window::SessionNavigation*> navigation, not_null<Window::SessionNavigation*> navigation,
not_null<UserData*> user, not_null<PeerData*> peer,
Ui::MultiSlideTracker &tracker) { Ui::MultiSlideTracker &tracker) {
auto count = rpl::single(0) | rpl::then(Data::SavedStoriesIds( auto count = rpl::single(0) | rpl::then(Data::SavedStoriesIds(
user, peer,
ServerMaxStoryId - 1, ServerMaxStoryId - 1,
0 0
) | rpl::map([](const Data::StoriesIdsSlice &slice) { ) | rpl::map([](const Data::StoriesIdsSlice &slice) {
@ -146,7 +146,7 @@ inline auto AddStoriesButton(
}, },
tracker)->entity(); tracker)->entity();
result->addClickHandler([=] { result->addClickHandler([=] {
navigation->showSection(Info::Stories::Make(user)); navigation->showSection(Info::Stories::Make(peer));
}); });
return result; return result;
}; };

View file

@ -187,12 +187,15 @@ object_ptr<Ui::RpWidget> InnerWidget::setupSharedMedia(
st::infoSharedMediaButtonIconPosition); st::infoSharedMediaButtonIconPosition);
}; };
auto addStoriesButton = [&]( auto addStoriesButton = [&](
not_null<UserData*> user, not_null<PeerData*> peer,
const style::icon &icon) { const style::icon &icon) {
if (peer->isChat()) {
return;
}
auto result = Media::AddStoriesButton( auto result = Media::AddStoriesButton(
content, content,
_controller, _controller,
user, peer,
tracker); tracker);
object_ptr<Profile::FloatingIcon>( object_ptr<Profile::FloatingIcon>(
result, result,
@ -200,9 +203,7 @@ object_ptr<Ui::RpWidget> InnerWidget::setupSharedMedia(
st::infoSharedMediaButtonIconPosition); st::infoSharedMediaButtonIconPosition);
}; };
if (auto user = _peer->asUser()) { addStoriesButton(_peer, st::infoIconMediaStories);
addStoriesButton(user, st::infoIconMediaStories);
}
addMediaButton(MediaType::Photo, st::infoIconMediaPhoto); addMediaButton(MediaType::Photo, st::infoIconMediaPhoto);
addMediaButton(MediaType::Video, st::infoIconMediaVideo); addMediaButton(MediaType::Video, st::infoIconMediaVideo);
addMediaButton(MediaType::File, st::infoIconMediaFile); addMediaButton(MediaType::File, st::infoIconMediaFile);

View file

@ -110,10 +110,8 @@ rpl::producer<QString> Widget::title() {
rpl::producer<Dialogs::Stories::Content> Widget::titleStories() { rpl::producer<Dialogs::Stories::Content> Widget::titleStories() {
const auto peer = controller()->key().peer(); const auto peer = controller()->key().peer();
if (const auto user = peer->asUser()) { if (peer && !peer->isChat()) {
if (!user->isBot()) { return Dialogs::Stories::LastForPeer(peer);
return Dialogs::Stories::LastForPeer(user);
}
} }
return nullptr; return nullptr;
} }

View file

@ -2218,7 +2218,7 @@ bool SessionController::openSharedStory(HistoryItem *item) {
bool SessionController::openFakeItemStory( bool SessionController::openFakeItemStory(
FullMsgId fakeItemId, FullMsgId fakeItemId,
const Data::StoriesContext *stories) { const Data::StoriesContext *stories) {
if (!peerIsUser(fakeItemId.peer) if (peerIsChat(fakeItemId.peer)
|| !IsStoryMsgId(fakeItemId.msg)) { || !IsStoryMsgId(fakeItemId.msg)) {
return false; return false;
} }