Fix overwriting feeds.json with an incomplete load of it

PR #19444.
Closes #19439.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
This commit is contained in:
Omar Abdul Azeez 2023-08-13 00:59:24 +09:00 committed by Vladimir Golovnev (glassez)
parent f5b5570a3b
commit 3088b38d7e
No known key found for this signature in database
GPG key ID: 52A2C7DEE2DFA6F7
2 changed files with 8 additions and 8 deletions

View file

@ -271,6 +271,7 @@ void Session::load()
if (readResult.error().status == Utils::IO::ReadError::NotExist) if (readResult.error().status == Utils::IO::ReadError::NotExist)
{ {
loadLegacy(); loadLegacy();
store(); // convert to new format
return; return;
} }
@ -294,10 +295,11 @@ void Session::load()
return; 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; bool updated = false;
for (const QString &key : asConst(jsonObj.keys())) for (const QString &key : asConst(jsonObj.keys()))
@ -353,7 +355,8 @@ void Session::loadFolder(const QJsonObject &jsonObj, Folder *folder)
} }
else else
{ {
loadFolder(valObj, addSubfolder(key, folder)); if (loadFolder(valObj, addSubfolder(key, folder)))
updated = true;
} }
} }
else else
@ -363,8 +366,7 @@ void Session::loadFolder(const QJsonObject &jsonObj, Folder *folder)
} }
} }
if (updated) return updated;
store(); // convert to updated format
} }
void Session::loadLegacy() void Session::loadLegacy()
@ -394,8 +396,6 @@ void Session::loadLegacy()
addFeed(feedUrl, feedPath); addFeed(feedUrl, feedPath);
++i; ++i;
} }
store(); // convert to new format
} }
void Session::store() void Session::store()

View file

@ -149,7 +149,7 @@ namespace RSS
private: private:
QUuid generateUID() const; QUuid generateUID() const;
void load(); void load();
void loadFolder(const QJsonObject &jsonObj, Folder *folder); bool loadFolder(const QJsonObject &jsonObj, Folder *folder);
void loadLegacy(); void loadLegacy();
void store(); void store();
nonstd::expected<Folder *, QString> prepareItemDest(const QString &path); nonstd::expected<Folder *, QString> prepareItemDest(const QString &path);