From 25d57ff807366471b0736c6693850a3cab263f61 Mon Sep 17 00:00:00 2001 From: Omar Abdul Azeez <49833164+Omar-Abdul-Azeez@users.noreply.github.com> Date: Sun, 13 Aug 2023 00:59:24 +0900 Subject: [PATCH] Fix overwriting feeds.json with an incomplete load of it PR #19444. Closes #19439. --------- Co-authored-by: Vladimir Golovnev --- src/base/rss/rss_session.cpp | 14 +++++++------- src/base/rss/rss_session.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/base/rss/rss_session.cpp b/src/base/rss/rss_session.cpp index 1d1ed81b1..d0c696c68 100644 --- a/src/base/rss/rss_session.cpp +++ b/src/base/rss/rss_session.cpp @@ -236,6 +236,7 @@ void Session::load() if (!itemsFile.exists()) { loadLegacy(); + store(); // convert to new format return; } @@ -262,10 +263,11 @@ void Session::load() return; } - loadFolder(jsonDoc.object(), rootFolder()); + if (loadFolder(jsonDoc.object(), rootFolder())) + store(); // convert to updated format } -void Session::loadFolder(const QJsonObject &jsonObj, Folder *folder) +bool Session::loadFolder(const QJsonObject &jsonObj, Folder *folder) { bool updated = false; for (const QString &key : asConst(jsonObj.keys())) @@ -321,7 +323,8 @@ void Session::loadFolder(const QJsonObject &jsonObj, Folder *folder) } else { - loadFolder(valObj, addSubfolder(key, folder)); + if (loadFolder(valObj, addSubfolder(key, folder))) + updated = true; } } else @@ -331,8 +334,7 @@ void Session::loadFolder(const QJsonObject &jsonObj, Folder *folder) } } - if (updated) - store(); // convert to updated format + return updated; } void Session::loadLegacy() @@ -362,8 +364,6 @@ void Session::loadLegacy() addFeed(feedUrl, feedPath); ++i; } - - store(); // convert to new format } void Session::store() diff --git a/src/base/rss/rss_session.h b/src/base/rss/rss_session.h index 1472802ce..27885fe1e 100644 --- a/src/base/rss/rss_session.h +++ b/src/base/rss/rss_session.h @@ -146,7 +146,7 @@ namespace RSS private: QUuid generateUID() const; void load(); - void loadFolder(const QJsonObject &jsonObj, Folder *folder); + bool loadFolder(const QJsonObject &jsonObj, Folder *folder); void loadLegacy(); void store(); nonstd::expected prepareItemDest(const QString &path);