From d5738b004de91f44716a6256041a6c1b48717999 Mon Sep 17 00:00:00 2001 From: re2zero Date: Tue, 28 Apr 2026 19:13:59 +0800 Subject: [PATCH] fix(storage): initialize default save path to Downloads instead of home MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SessionManager._save_root was empty until storageConfig signal arrived, which depended on signal connection timing via std::call_once. On fresh installs with no config, the signal never fired and files were saved to home directory instead of Downloads. SessionManager._save_root 在 storageConfig 信号到达前为空,而该信号 依赖 std::call_once 的时序。新安装系统无历史配置时信号不触发,导致文件 保存在主目录而非下载目录。 Log: 修复新安装系统文件保存路径默认为主目录的问题 PMS: BUG-296181 Influence: 新安装镜像上接收文件将正确保存在下载目录,而非主目录。已安装系统行为不受影响。 --- src/compat/plugins/daemon/core/utils/config.h | 7 ++++--- src/lib/cooperation/core/net/networkutil.cpp | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/compat/plugins/daemon/core/utils/config.h b/src/compat/plugins/daemon/core/utils/config.h index ba38be916..f791ebc74 100644 --- a/src/compat/plugins/daemon/core/utils/config.h +++ b/src/compat/plugins/daemon/core/utils/config.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -164,10 +164,11 @@ class DaemonConfig const fastring getStorageDir() { fastring home = os::homedir(); + fastring download = path::join(home, "Downloads"); if (_targetName.empty()) { - _storageDir = home; + _storageDir = download; } else { - _storageDir = path::join(home, _targetName); + _storageDir = path::join(download, _targetName); } return _storageDir; } diff --git a/src/lib/cooperation/core/net/networkutil.cpp b/src/lib/cooperation/core/net/networkutil.cpp index b1c91905e..5cd304b98 100644 --- a/src/lib/cooperation/core/net/networkutil.cpp +++ b/src/lib/cooperation/core/net/networkutil.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -25,6 +25,7 @@ #include #include #include +#include #include using namespace cooperation_core; @@ -35,6 +36,7 @@ NetworkUtilPrivate::NetworkUtilPrivate(NetworkUtil *qq) LOG << "This is only transfer?" << onlyTransfer; sessionManager = new SessionManager(this); + sessionManager->setStorageRoot(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)); if (onlyTransfer) { DLOG << "Running in transfer-only mode, skipping full initialization"; return;