From ad5b96b049d103ae682366053fa4f213de584006 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 15 Jun 2023 20:28:53 +0400 Subject: [PATCH] Show toasts on reply / archive / unarchive. --- Telegram/Resources/langs/lang.strings | 3 +++ .../boxes/peer_list_controllers.cpp | 3 ++- Telegram/SourceFiles/data/data_stories.cpp | 26 +++++++++++++------ Telegram/SourceFiles/data/data_stories.h | 9 ++++++- .../dialogs/dialogs_inner_widget.cpp | 3 ++- .../media/stories/media_stories_reply.cpp | 15 ++++++++--- .../media/stories/media_stories_reply.h | 7 +++-- 7 files changed, 49 insertions(+), 17 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 9a0a660b4..982160f60 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -3811,6 +3811,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_stories_my_title" = "My Stories"; "lng_stories_archive_button" = "Archive"; "lng_stories_archive_title" = "Stories Archive"; +"lng_stories_reply_sent" = "Message Sent"; +"lng_stories_hidden_to_contacts" = "Those stories are now shown only in your Contacts list."; +"lng_stories_shown_in_chats" = "Those stories are now shown in your Chats list."; "lng_stories_link_invalid" = "This link is broken or has expired."; diff --git a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp index 86150e820..9e6e2e146 100644 --- a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp @@ -108,7 +108,8 @@ object_ptr PrepareContactsBox( ) | rpl::start_with_next([=](Stories::ToggleShownRequest request) { sessionController->session().data().stories().toggleHidden( PeerId(int64(request.id)), - !request.shown); + !request.shown, + sessionController->uiShow()); }, raw->lifetime()); raw->loadMoreRequests( diff --git a/Telegram/SourceFiles/data/data_stories.cpp b/Telegram/SourceFiles/data/data_stories.cpp index 12f4b33a7..a0560e565 100644 --- a/Telegram/SourceFiles/data/data_stories.cpp +++ b/Telegram/SourceFiles/data/data_stories.cpp @@ -16,16 +16,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_document.h" #include "data/data_file_origin.h" #include "data/data_photo.h" -#include "data/data_session.h" -#include "lang/lang_keys.h" -#include "main/main_session.h" -#include "ui/text/text_utilities.h" - -// #TODO stories testing #include "data/data_user.h" +#include "data/data_session.h" +#include "data/data_thread.h" #include "history/history.h" #include "history/history_item.h" -#include "storage/storage_shared_media.h" +#include "lang/lang_keys.h" +#include "main/main_session.h" +#include "ui/layers/show.h" +#include "ui/text/text_utilities.h" namespace Data { namespace { @@ -1140,7 +1139,10 @@ void Stories::markAsRead(FullStoryId id, bool viewed) { _markReadTimer.callOnce(kMarkAsReadDelay); } -void Stories::toggleHidden(PeerId peerId, bool hidden) { +void Stories::toggleHidden( + PeerId peerId, + bool hidden, + std::shared_ptr show) { const auto user = _owner->peer(peerId)->asUser(); Assert(user != nullptr); if (user->hasStoriesHidden() != hidden) { @@ -1153,6 +1155,14 @@ void Stories::toggleHidden(PeerId peerId, bool hidden) { )).send(); } + const auto guard = gsl::finally([&] { + if (show) { + show->showToast(hidden + ? tr::lng_stories_hidden_to_contacts(tr::now) + : tr::lng_stories_shown_in_chats(tr::now)); + } + }); + const auto i = _all.find(peerId); if (i == end(_all)) { return; diff --git a/Telegram/SourceFiles/data/data_stories.h b/Telegram/SourceFiles/data/data_stories.h index 8fc341076..74cffd64b 100644 --- a/Telegram/SourceFiles/data/data_stories.h +++ b/Telegram/SourceFiles/data/data_stories.h @@ -21,6 +21,10 @@ namespace Main { class Session; } // namespace Main +namespace Ui { +class Show; +} // namespace Ui + namespace Data { class Session; @@ -251,7 +255,10 @@ public: [[nodiscard]] bool isQuitPrevent(); void markAsRead(FullStoryId id, bool viewed); - void toggleHidden(PeerId peerId, bool hidden); + void toggleHidden( + PeerId peerId, + bool hidden, + std::shared_ptr show); static constexpr auto kViewsPerPage = 50; void loadViewsSlice( diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index cb559842e..22ac09842 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -353,7 +353,8 @@ InnerWidget::InnerWidget( ) | rpl::start_with_next([=](Stories::ToggleShownRequest request) { session().data().stories().toggleHidden( PeerId(int64(request.id)), - !request.shown); + !request.shown, + _controller->uiShow()); }, lifetime()); _stories->loadMoreRequests( diff --git a/Telegram/SourceFiles/media/stories/media_stories_reply.cpp b/Telegram/SourceFiles/media/stories/media_stories_reply.cpp index becd18b49..9d7f24715 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_reply.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_reply.cpp @@ -122,7 +122,7 @@ void ReplyArea::sendReaction(const Data::ReactionId &id) { } } if (!message.textWithTags.empty()) { - send(std::move(message), {}); + send(std::move(message), {}, true); } } @@ -136,7 +136,10 @@ void ReplyArea::send(Api::SendOptions options) { send(std::move(message), options); } -void ReplyArea::send(Api::MessageToSend message, Api::SendOptions options) { +void ReplyArea::send( + Api::MessageToSend message, + Api::SendOptions options, + bool skipToast) { const auto error = GetErrorTextForSending( _data.user, { @@ -151,7 +154,7 @@ void ReplyArea::send(Api::MessageToSend message, Api::SendOptions options) { session().api().sendMessage(std::move(message)); _controls->clear(); - finishSending(); + finishSending(skipToast); } void ReplyArea::sendVoice(VoiceToSend &&data) { @@ -256,9 +259,13 @@ void ReplyArea::sendInlineResult( finishSending(); } -void ReplyArea::finishSending() { +void ReplyArea::finishSending(bool skipToast) { _controls->hidePanelsAnimated(); _controller->wrap()->setFocus(); + if (!skipToast) { + _controller->uiShow()->showToast( + tr::lng_stories_reply_sent(tr::now)); + } } void ReplyArea::uploadFile( diff --git a/Telegram/SourceFiles/media/stories/media_stories_reply.h b/Telegram/SourceFiles/media/stories/media_stories_reply.h index 4dcd84013..5853ffc0e 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_reply.h +++ b/Telegram/SourceFiles/media/stories/media_stories_reply.h @@ -73,7 +73,10 @@ private: [[nodiscard]] Main::Session &session() const; [[nodiscard]] not_null history() const; - void send(Api::MessageToSend message, Api::SendOptions options); + void send( + Api::MessageToSend message, + Api::SendOptions options, + bool skipToast = false); void uploadFile(const QByteArray &fileContent, SendMediaType type); bool confirmSendingFiles( @@ -98,7 +101,7 @@ private: TextWithTags &&caption, Api::SendOptions options, bool ctrlShiftEnter); - void finishSending(); + void finishSending(bool skipToast = false); void sendExistingDocument(not_null document); bool sendExistingDocument(