From f586ea3a753fa41f25bf3f0994cd79cf0f577285 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 6 Jun 2022 18:04:27 +0400 Subject: [PATCH] Handle MSG_VOICE_TOO_LONG for voice messages. --- Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/api/api_transcribes.cpp | 6 ++++-- Telegram/SourceFiles/api/api_transcribes.h | 1 + .../history/view/media/history_view_document.cpp | 6 +++++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index ca75530bf..6ab0a9ebc 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2654,6 +2654,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_audio_player_reverse" = "Reverse order"; "lng_audio_player_shuffle" = "Shuffle"; +"lng_audio_transcribe_long" = "This voice message is too long."; "lng_rights_edit_admin" = "Manage permissions"; "lng_rights_edit_admin_header" = "What can this admin do?"; diff --git a/Telegram/SourceFiles/api/api_transcribes.cpp b/Telegram/SourceFiles/api/api_transcribes.cpp index b1753eed4..30c7fdee5 100644 --- a/Telegram/SourceFiles/api/api_transcribes.cpp +++ b/Telegram/SourceFiles/api/api_transcribes.cpp @@ -78,12 +78,14 @@ void Transcribes::load(not_null item) { _session->data().requestItemResize(item); } }); - }).fail([=] { + }).fail([=](const MTP::Error &error) { auto &entry = _map[id]; entry.requestId = 0; entry.pending = false; entry.failed = true; - if (const auto item = _session->data().message(id)) { + if (error.type() == qstr("MSG_VOICE_TOO_LONG")) { + entry.toolong = true; + } else if (const auto item = _session->data().message(id)) { _session->data().requestItemResize(item); } }).send(); diff --git a/Telegram/SourceFiles/api/api_transcribes.h b/Telegram/SourceFiles/api/api_transcribes.h index 9d7e6904a..a63fb97af 100644 --- a/Telegram/SourceFiles/api/api_transcribes.h +++ b/Telegram/SourceFiles/api/api_transcribes.h @@ -25,6 +25,7 @@ public: QString result; bool shown = false; bool failed = false; + bool toolong = false; bool pending = false; mtpRequestId requestId = 0; }; diff --git a/Telegram/SourceFiles/history/view/media/history_view_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_document.cpp index ec8e9b6e6..547b7cada 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_document.cpp @@ -256,9 +256,13 @@ QSize Document::countOptimalSize() { update); auto text = (entry.requestId || !entry.shown) ? TextWithEntities() + : entry.toolong + ? Ui::Text::Italic(tr::lng_audio_transcribe_long(tr::now)) : entry.failed ? Ui::Text::Italic(tr::lng_attach_failed(tr::now)) - : TextWithEntities{ entry.result }; + : TextWithEntities{ + entry.result + (entry.pending ? " [...]" : ""), + }; voice->transcribe->setOpened(!text.empty(), update); if (text.empty()) { voice->transcribeText = {};