From 024a35d77096f18ef00f956685a3b37f252683f2 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 16 Nov 2020 19:54:47 +0300 Subject: [PATCH] Added ability to send recorded voice data from ComposeControls. --- .../controls/history_view_compose_controls.cpp | 17 +++++++++++++++-- .../controls/history_view_compose_controls.h | 6 ++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp index eadde1509c..e5b232f366 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -721,12 +721,15 @@ rpl::producer> ComposeControls::keyEvents() const { }); } -rpl::producer ComposeControls::sendRequests() const { +auto ComposeControls::sendContentRequests(SendRequestType requestType) const { auto filter = rpl::filter([=] { const auto type = (_mode == Mode::Normal) ? Ui::SendButton::Type::Send : Ui::SendButton::Type::Schedule; - return (_send->type() == type); + const auto sendRequestType = _voiceRecordBar->isListenState() + ? SendRequestType::Voice + : SendRequestType::Text; + return (_send->type() == type) && (sendRequestType == requestType); }); auto map = rpl::map_to(Api::SendOptions()); auto submits = base::qt_signal_producer( @@ -738,6 +741,10 @@ rpl::producer ComposeControls::sendRequests() const { _sendCustomRequests.events()); } +rpl::producer ComposeControls::sendRequests() const { + return sendContentRequests(SendRequestType::Text); +} + rpl::producer ComposeControls::sendVoiceRequests() const { return _voiceRecordBar->sendVoiceRequests(); } @@ -973,6 +980,12 @@ void ComposeControls::init() { updateHeight(); }, _wrap->lifetime()); + sendContentRequests( + SendRequestType::Voice + ) | rpl::start_with_next([=](Api::SendOptions options) { + _voiceRecordBar->requestToSendWithOptions(options); + }, _wrap->lifetime()); + { const auto lastMsgId = _wrap->lifetime().make_state(); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h index fbdce2296c..926975cd70 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h @@ -169,6 +169,10 @@ private: Normal, Edit, }; + enum class SendRequestType { + Text, + Voice, + }; using TextUpdateEvents = base::flags; friend inline constexpr bool is_flag_type(TextUpdateEvent) { return true; }; @@ -195,6 +199,8 @@ private: void sendSilent(); void sendScheduled(); + [[nodiscard]] auto sendContentRequests( + SendRequestType requestType = SendRequestType::Text) const; void orderControls(); void checkAutocomplete();