From d1e3b9f15da68169efd1be30034e5371fa09608f Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 10 Sep 2024 14:13:50 +0400 Subject: [PATCH] Revert "Check for local URLs more strictly." This reverts commit c3fda41224d859631d5d0135544ccada2615d6fe. --- Telegram/SourceFiles/boxes/send_files_box.cpp | 3 +-- Telegram/SourceFiles/core/file_utilities.h | 6 +---- Telegram/SourceFiles/core/mime_type.cpp | 13 +---------- Telegram/SourceFiles/core/mime_type.h | 1 - .../SourceFiles/history/history_widget.cpp | 2 +- .../platform/mac/file_utilities_mac.mm | 4 ---- .../storage/storage_media_prepare.cpp | 23 ++++++++++--------- 7 files changed, 16 insertions(+), 36 deletions(-) diff --git a/Telegram/SourceFiles/boxes/send_files_box.cpp b/Telegram/SourceFiles/boxes/send_files_box.cpp index e6b36b680..d1757da15 100644 --- a/Telegram/SourceFiles/boxes/send_files_box.cpp +++ b/Telegram/SourceFiles/boxes/send_files_box.cpp @@ -32,7 +32,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/premium_limits_box.h" #include "boxes/premium_preview_box.h" #include "boxes/send_credits_box.h" -#include "platform/platform_file_utilities.h" #include "ui/effects/scroll_content_shadow.h" #include "ui/widgets/fields/number_input.h" #include "ui/widgets/checkbox.h" @@ -72,7 +71,7 @@ constexpr auto kMaxMessageLength = 4096; using Ui::SendFilesWay; [[nodiscard]] inline bool CanAddUrls(const QList &urls) { - return !urls.isEmpty() && ranges::all_of(urls, Core::UrlIsLocal); + return !urls.isEmpty() && ranges::all_of(urls, &QUrl::isLocalFile); } [[nodiscard]] bool CanAddFiles(not_null data) { diff --git a/Telegram/SourceFiles/core/file_utilities.h b/Telegram/SourceFiles/core/file_utilities.h index e3efd5960..815b89772 100644 --- a/Telegram/SourceFiles/core/file_utilities.h +++ b/Telegram/SourceFiles/core/file_utilities.h @@ -7,10 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -namespace Core { -bool UrlIsLocal(const QUrl &url); -} // namespace Core - namespace Main { class Session; } // namespace Main @@ -49,7 +45,7 @@ void ShowInFolder(const QString &filepath); namespace internal { inline QString UrlToLocalDefault(const QUrl &url) { - return Core::UrlIsLocal(url) ? url.toLocalFile() : QString(); + return url.toLocalFile(); } void UnsafeOpenUrlDefault(const QString &url); diff --git a/Telegram/SourceFiles/core/mime_type.cpp b/Telegram/SourceFiles/core/mime_type.cpp index 2748f7628..5e15fd4e3 100644 --- a/Telegram/SourceFiles/core/mime_type.cpp +++ b/Telegram/SourceFiles/core/mime_type.cpp @@ -226,24 +226,13 @@ bool CanSendFiles(not_null data) { if (data->hasImage()) { return true; } else if (const auto urls = ReadMimeUrls(data); !urls.empty()) { - if (ranges::all_of(urls, UrlIsLocal)) { + if (ranges::all_of(urls, &QUrl::isLocalFile)) { return true; } } return false; } -bool UrlIsLocal(const QUrl &url) { - if (!url.isLocalFile()) { - return false; - } - const auto result = url.toLocalFile(); - if (result.startsWith("//")) { - return false; - } - return !result.isEmpty(); -} - QString FileExtension(const QString &filepath) { const auto reversed = ranges::views::reverse(filepath); const auto last = ranges::find_first_of(reversed, ".\\/"); diff --git a/Telegram/SourceFiles/core/mime_type.h b/Telegram/SourceFiles/core/mime_type.h index 57793a4b0..ebf4db64b 100644 --- a/Telegram/SourceFiles/core/mime_type.h +++ b/Telegram/SourceFiles/core/mime_type.h @@ -68,7 +68,6 @@ struct MimeImageData { [[nodiscard]] QString ReadMimeText(not_null data); [[nodiscard]] QList ReadMimeUrls(not_null data); [[nodiscard]] bool CanSendFiles(not_null data); -[[nodiscard]] bool UrlIsLocal(const QUrl &url); enum class NameType : uchar { Unknown, diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 5746ab0c2..d857f252d 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -5786,7 +5786,7 @@ bool HistoryWidget::canSendFiles(not_null data) const { } else if (data->hasImage()) { return true; } else if (const auto urls = Core::ReadMimeUrls(data); !urls.empty()) { - if (ranges::all_of(urls, Core::UrlIsLocal)) { + if (ranges::all_of(urls, &QUrl::isLocalFile)) { return true; } } diff --git a/Telegram/SourceFiles/platform/mac/file_utilities_mac.mm b/Telegram/SourceFiles/platform/mac/file_utilities_mac.mm index a41b55f1c..1447454de 100644 --- a/Telegram/SourceFiles/platform/mac/file_utilities_mac.mm +++ b/Telegram/SourceFiles/platform/mac/file_utilities_mac.mm @@ -8,7 +8,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "platform/mac/file_utilities_mac.h" #include "base/platform/mac/base_utilities_mac.h" -#include "core/mime_type.h" #include "lang/lang_keys.h" #include "styles/style_window.h" @@ -380,9 +379,6 @@ namespace Platform { namespace File { QString UrlToLocal(const QUrl &url) { - if (!Core::UrlIsLocal(url)) { - return QString(); - } auto result = url.toLocalFile(); if (result.startsWith(u"/.file/id="_q)) { NSString *nsurl = [[[NSURL URLWithString: [NSString stringWithUTF8String: (u"file://"_q + result).toUtf8().constData()]] filePathURL] path]; diff --git a/Telegram/SourceFiles/storage/storage_media_prepare.cpp b/Telegram/SourceFiles/storage/storage_media_prepare.cpp index 9424217ad..5e3421b48 100644 --- a/Telegram/SourceFiles/storage/storage_media_prepare.cpp +++ b/Telegram/SourceFiles/storage/storage_media_prepare.cpp @@ -83,9 +83,10 @@ bool ValidatePhotoEditorMediaDragData(not_null data) { } if (!urls.isEmpty()) { - using namespace Core; - const auto file = Platform::File::UrlToLocal(urls.front()); - if (!file.isEmpty()) { + const auto url = urls.front(); + if (url.isLocalFile()) { + using namespace Core; + const auto file = Platform::File::UrlToLocal(url); const auto info = QFileInfo(file); return FileIsImage(file, MimeTypeForFile(info).name()) && QImageReader(file).canRead(); @@ -106,10 +107,10 @@ bool ValidateEditMediaDragData( } if (albumType == Ui::AlbumType::PhotoVideo && !urls.isEmpty()) { - using namespace Core; - const auto file = Platform::File::UrlToLocal(urls.front()); - if (!file.isEmpty()) { - const auto info = QFileInfo(file); + const auto url = urls.front(); + if (url.isLocalFile()) { + using namespace Core; + const auto info = QFileInfo(Platform::File::UrlToLocal(url)); return IsMimeAcceptedForPhotoVideoAlbum(MimeTypeForFile(info).name()); } } @@ -133,10 +134,10 @@ MimeDataState ComputeMimeDataState(const QMimeData *data) { auto allAreSmallImages = true; for (const auto &url : urls) { - const auto file = Platform::File::UrlToLocal(url); - if (file.isEmpty()) { + if (!url.isLocalFile()) { return MimeDataState::None; } + const auto file = Platform::File::UrlToLocal(url); const auto info = QFileInfo(file); if (info.isDir()) { @@ -174,13 +175,13 @@ PreparedList PrepareMediaList( auto locals = QStringList(); locals.reserve(files.size()); for (const auto &url : files) { - locals.push_back(Platform::File::UrlToLocal(url)); - if (locals.back().isEmpty()) { + if (!url.isLocalFile()) { return { PreparedList::Error::NonLocalUrl, url.toDisplayString() }; } + locals.push_back(Platform::File::UrlToLocal(url)); } return PrepareMediaList(locals, previewWidth, premium); }