From 092923fe6e91870158e87e028aad22ac29fe2be6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 8 Nov 2022 18:24:08 +0400 Subject: [PATCH] Don't autodownload files if sandbox prevents it. Partially fixes #25308. --- Telegram/SourceFiles/core/application.cpp | 6 ++++++ Telegram/SourceFiles/core/application.h | 1 + Telegram/SourceFiles/data/data_document.cpp | 2 +- Telegram/SourceFiles/data/data_document_media.cpp | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index e8a5cee73d..d8c36bc938 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -587,6 +587,12 @@ void Application::saveSettings() { Local::writeSettings(); } +bool Application::canSaveFileWithoutAskingForPath() const { + return !Core::App().settings().askDownloadPath() + && (!KSandbox::isInside() + || !Core::App().settings().downloadPath().isEmpty()); +} + MTP::Config &Application::fallbackProductionConfig() const { if (!_fallbackProductionConfig) { _fallbackProductionConfig = std::make_unique( diff --git a/Telegram/SourceFiles/core/application.h b/Telegram/SourceFiles/core/application.h index b984ccfa4c..63ccc30a52 100644 --- a/Telegram/SourceFiles/core/application.h +++ b/Telegram/SourceFiles/core/application.h @@ -178,6 +178,7 @@ public: [[nodiscard]] Settings &settings(); void saveSettingsDelayed(crl::time delay = kDefaultSaveDelay); void saveSettings(); + [[nodiscard]] bool canSaveFileWithoutAskingForPath() const; // Fallback config and proxy. [[nodiscard]] MTP::Config &fallbackProductionConfig() const; diff --git a/Telegram/SourceFiles/data/data_document.cpp b/Telegram/SourceFiles/data/data_document.cpp index 1bf78e3fa9..8e42df9190 100644 --- a/Telegram/SourceFiles/data/data_document.cpp +++ b/Telegram/SourceFiles/data/data_document.cpp @@ -1118,7 +1118,7 @@ bool DocumentData::saveFromData() { bool DocumentData::saveFromDataSilent() { return !filepath(true).isEmpty() - || (!Core::App().settings().askDownloadPath() + || (Core::App().canSaveFileWithoutAskingForPath() && saveFromDataChecked()); } diff --git a/Telegram/SourceFiles/data/data_document_media.cpp b/Telegram/SourceFiles/data/data_document_media.cpp index 2afa04ad2a..89a48d6b0f 100644 --- a/Telegram/SourceFiles/data/data_document_media.cpp +++ b/Telegram/SourceFiles/data/data_document_media.cpp @@ -291,7 +291,7 @@ void DocumentMedia::automaticLoad( return; } const auto toCache = _owner->saveToCache(); - if (!toCache && Core::App().settings().askDownloadPath()) { + if (!toCache && !Core::App().canSaveFileWithoutAskingForPath()) { // We need a filename, but we're supposed to ask user for it. // No automatic download in this case. return;