From 2212b55b1377a5b40214bf5090d829787fa5a97b Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 9 May 2023 19:37:40 +0400 Subject: [PATCH] Allow downloading my own stories. --- .../SourceFiles/media/stories/media_stories_controller.cpp | 5 +++++ .../SourceFiles/media/stories/media_stories_controller.h | 2 ++ Telegram/SourceFiles/media/stories/media_stories_view.cpp | 4 ++++ Telegram/SourceFiles/media/stories/media_stories_view.h | 1 + .../SourceFiles/media/view/media_view_overlay_widget.cpp | 3 ++- 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp index c653ffb7f..29d4f07c0 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer.h" #include "base/power_save_blocker.h" #include "data/data_stories.h" +#include "data/data_user.h" #include "media/stories/media_stories_delegate.h" #include "media/stories/media_stories_header.h" #include "media/stories/media_stories_sibling.h" @@ -381,6 +382,10 @@ void Controller::togglePaused(bool paused) { } } +bool Controller::canDownload() const { + return _list && _list->user->isSelf(); +} + void Controller::repaintSibling(not_null sibling) { if (sibling == _siblingLeft.get() || sibling == _siblingRight.get()) { _delegate->storiesRepaint(); diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.h b/Telegram/SourceFiles/media/stories/media_stories_controller.h index dc80c4667..3bfadaa88 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.h +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.h @@ -86,6 +86,8 @@ public: [[nodiscard]] bool paused() const; void togglePaused(bool paused); + [[nodiscard]] bool canDownload() const; + void repaintSibling(not_null sibling); [[nodiscard]] SiblingView siblingLeft() const; [[nodiscard]] SiblingView siblingRight() const; diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.cpp b/Telegram/SourceFiles/media/stories/media_stories_view.cpp index 19b4fddfe..37454aa75 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_view.cpp @@ -32,6 +32,10 @@ void View::ready() { _controller->ready(); } +bool View::canDownload() const { + return _controller->canDownload(); +} + QRect View::contentGeometry() const { return _controller->layout().content; } diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.h b/Telegram/SourceFiles/media/stories/media_stories_view.h index f225d42ad..e2399c483 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.h +++ b/Telegram/SourceFiles/media/stories/media_stories_view.h @@ -43,6 +43,7 @@ public: int subindex); void ready(); + [[nodiscard]] bool canDownload() const; [[nodiscard]] QRect contentGeometry() const; [[nodiscard]] rpl::producer contentGeometryValue() const; [[nodiscard]] SiblingView siblingLeft() const; diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 1514a7527..ab14487a5 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -1044,7 +1044,8 @@ void OverlayWidget::refreshNavVisibility() { } bool OverlayWidget::contentCanBeSaved() const { - if (_stories || hasCopyMediaRestriction()) { + if ((_stories && !_stories->canDownload()) + || hasCopyMediaRestriction()) { return false; } else if (_photo) { return _photo->hasVideo() || _photoMedia->loaded();