From b2ce1d2d1555346f6b9ea05d661eda0e92aa157c Mon Sep 17 00:00:00 2001 From: ZavaruKitsu Date: Sun, 22 Oct 2023 00:15:54 +0300 Subject: [PATCH] fix: a bunch of fixes TTL media, some crashes, useless code --- .../ayu/utils/telegram_helpers.cpp | 9 +++ .../SourceFiles/ayu/utils/telegram_helpers.h | 2 + .../chat_helpers/gifs_list_widget.cpp | 37 ++++++----- Telegram/SourceFiles/data/data_session.cpp | 16 ----- Telegram/SourceFiles/history/history_item.cpp | 9 +-- .../history_view_voice_record_bar.cpp | 66 +++++++++---------- .../history/view/history_view_element.cpp | 4 +- 7 files changed, 71 insertions(+), 72 deletions(-) diff --git a/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp b/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp index e339d45e1..a871a291d 100644 --- a/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp +++ b/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp @@ -10,6 +10,7 @@ #include "api/api_text_entities.h" +#include "lang_auto.h" #include "apiwrap.h" #include "data/data_forum.h" #include "data/data_forum_topic.h" @@ -222,4 +223,12 @@ void MarkAsReadThread(not_null thread) if (thread->unreadReactions().has()) { sendReadReactions(thread); } +} + +QString formatTTL(int time) { + if (time == 0x7FFFFFFF) { + return QString("👀 %1").arg(tr::ayu_OneViewTTL(tr::now)); + } + + return QString("🕓 %1s").arg(time); } \ No newline at end of file diff --git a/Telegram/SourceFiles/ayu/utils/telegram_helpers.h b/Telegram/SourceFiles/ayu/utils/telegram_helpers.h index 48cd209c6..710bacb8d 100644 --- a/Telegram/SourceFiles/ayu/utils/telegram_helpers.h +++ b/Telegram/SourceFiles/ayu/utils/telegram_helpers.h @@ -23,3 +23,5 @@ std::pair serializeTextWithEntities(not_null list); void MarkAsReadThread(not_null thread); + +QString formatTTL(int time); diff --git a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp index 2c53418a6..280ca4dbd 100644 --- a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp @@ -491,26 +491,29 @@ void GifsListWidget::selectInlineResult( const auto preview = Data::VideoPreviewState(media.get()); if (forceSend || (media && preview.loaded())) { auto settings = &AyuSettings::getInstance(); - auto sendGIFCallback = [=, this] - { - _fileChosen.fire({ - .document = document, - .options = options, - .messageSendingFrom = messageSendingFrom(), - }); - }; - if (settings->gifConfirmation) - { + if (settings->gifConfirmation) { + auto sendGIFCallback = [=, this] + { + _fileChosen.fire({ + .document = document, + .options = options, + .messageSendingFrom = messageSendingFrom(), + }); + }; + Ui::show(Ui::MakeConfirmBox({ - .text = tr::ayu_ConfirmationGIF(), - .confirmed = sendGIFCallback, - .confirmText = tr::lng_send_button() - })); + .text = tr::ayu_ConfirmationGIF(), + .confirmed = sendGIFCallback, + .confirmText = tr::lng_send_button() + })); } - else - { - sendGIFCallback(); + else { + _fileChosen.fire({ + .document = document, + .options = options, + .messageSendingFrom = messageSendingFrom(), + }); } } else if (!preview.usingThumbnail()) { if (preview.loading()) { diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index f95fdc3ca..c25b7928e 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -2292,22 +2292,6 @@ void Session::updateEditedMessage(const MTPMessage &data) { bool isDocument = media && media->document(); AyuMessages::getInstance().addEditedMessage(edit, existing); - - if (!media || !(media->photo() || media->document())) - { - // history->addNewLocalMessage( - // history->nextNonHistoryEntryId(), - // flags, - // UserId(), - // existing->id, - // base::unixtime::now(), - // existing->author()->id, - // "AyuGram"_q, - // msg, - // MTP_messageMediaEmpty(), - // HistoryMessageMarkupData(), - // existing->groupId().empty() ? 0 : existing->groupId().value); - } } proceed: diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 4114ed923..091ee5b07 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -72,6 +72,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL // AyuGram includes #include "ayu/ayu_settings.h" +#include "ayu/utils/telegram_helpers.h" namespace { @@ -235,7 +236,7 @@ std::unique_ptr HistoryItem::CreateMedia( }); }, [&](const MTPDmessageMediaDocument &media) -> Result { const auto document = media.vdocument(); - if (media.vttl_seconds()) { + if (media.vttl_seconds() && false) { // AyuGram: show expiring messages LOG(("App Error: " "Unexpected MTPMessageMediaDocument " "with ttl_seconds in CreateMedia.")); @@ -336,15 +337,15 @@ HistoryItem::HistoryItem( applyTTL(data); } else { createComponents(data); - if (const auto media = data.vmedia()) { + if (media) { setMedia(*media); if (checked == MediaCheckResult::HasTimeToLive) { media->match([&](const MTPDmessageMediaPhoto &media) { auto time = media.vttl_seconds()->v; - setAyuHint("🕓 " + QString::number(time) + "s"); + setAyuHint(formatTTL(time)); }, [&](const MTPDmessageMediaDocument &media) { auto time = media.vttl_seconds()->v; - setAyuHint("🕓 " + QString::number(time) + "s"); + setAyuHint(formatTTL(time)); }, [&](const MTPDmessageMediaWebPage &media) { }, [&](const MTPDmessageMediaGame &media) { }, [&](const MTPDmessageMediaInvoice &media) { diff --git a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp index febfb4ac3..d56b10ffa 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp @@ -1499,24 +1499,21 @@ void VoiceRecordBar::stopRecording(StopType type) { const auto duration = Duration(data.samples); auto settings = &AyuSettings::getInstance(); - if (type == StopType::Send) - { - auto sendVoiceCallback = [=, this] - { - _sendVoiceRequests.fire({data.bytes, data.waveform, duration}); - }; + if (type == StopType::Send) { + if (settings->voiceConfirmation) { + auto sendVoiceCallback = [=, this] + { + _sendVoiceRequests.fire({data.bytes, data.waveform, duration}); + }; - if (settings->voiceConfirmation) - { Ui::show(AyuUi::MakeConfirmBox({ - .text = tr::ayu_ConfirmationVoice(), - .confirmed = sendVoiceCallback, - .confirmText = tr::lng_send_button() - })); + .text = tr::ayu_ConfirmationVoice(), + .confirmed = sendVoiceCallback, + .confirmText = tr::lng_send_button() + })); } - else - { - sendVoiceCallback(); + else { + _sendVoiceRequests.fire({data.bytes, data.waveform, duration}); } } else if (type == StopType::Listen) { _listen = std::make_unique( @@ -1589,27 +1586,30 @@ void VoiceRecordBar::requestToSendWithOptions(Api::SendOptions options) { const auto data = _listen->data(); auto settings = &AyuSettings::getInstance(); - auto sendVoiceCallback = [=, this] - { - _sendVoiceRequests.fire({ - data->bytes, - data->waveform, - Duration(data->samples), - options - }); - }; + if (settings->voiceConfirmation) { + auto sendVoiceCallback = [=, this] + { + _sendVoiceRequests.fire({ + data->bytes, + data->waveform, + Duration(data->samples), + options + }); + }; - if (settings->voiceConfirmation) - { Ui::show(AyuUi::MakeConfirmBox({ - .text = tr::ayu_ConfirmationVoice(), - .confirmed = sendVoiceCallback, - .confirmText = tr::lng_send_button() - })); + .text = tr::ayu_ConfirmationVoice(), + .confirmed = sendVoiceCallback, + .confirmText = tr::lng_send_button() + })); } - else - { - sendVoiceCallback(); + else { + _sendVoiceRequests.fire({ + data->bytes, + data->waveform, + Duration(data->samples), + options + }); } } } diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp index 2155a2b59..9134c0b6d 100644 --- a/Telegram/SourceFiles/history/view/history_view_element.cpp +++ b/Telegram/SourceFiles/history/view/history_view_element.cpp @@ -1428,7 +1428,7 @@ Element *Element::previousInBlocks() const { Element *Element::previousDisplayedInBlocks() const { auto result = previousInBlocks(); - while (result && (result->data()->isEmpty() || result->isHidden() || result->data()->isLocal())) { + while (result && (result->data()->isEmpty() || result->isHidden())) { result = result->previousInBlocks(); } return result; @@ -1449,7 +1449,7 @@ Element *Element::nextInBlocks() const { Element *Element::nextDisplayedInBlocks() const { auto result = nextInBlocks(); - while (result && (result->data()->isEmpty() || result->isHidden() || result->data()->isLocal())) { + while (result && (result->data()->isEmpty() || result->isHidden())) { result = result->nextInBlocks(); } return result;