From 19e45ef9de619dd6b99b2e9cbfac17cbd4710832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Fri, 2 Feb 2024 13:04:38 +0100 Subject: [PATCH] Fix issues getting marked as opened because android minimum current page is 1 --- YACReaderLibrary/db_helper.cpp | 8 ++++++-- YACReaderLibrary/db_helper.h | 2 +- .../server/controllers/v2/synccontroller_v2.cpp | 12 +++++++++--- .../server/yacreader_server_data_helper.cpp | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index d7b6256c..1a329233 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -998,7 +998,7 @@ void DBHelper::updateFromRemoteClient(qulonglong libraryId, const ComicInfo &com QSqlDatabase::removeDatabase(connectionName); } -QMap> DBHelper::updateFromRemoteClient(const QMap> &comics) +QMap> DBHelper::updateFromRemoteClient(const QMap> &comics, bool clientSendsHasBeenOpened) { QMap> moreRecentComics; @@ -1050,7 +1050,11 @@ QMap> DBHelper::updateFromRemoteClient(const QMap 0; + if (clientSendsHasBeenOpened) { + comic.info.hasBeenOpened = comic.info.hasBeenOpened || comicInfo.hasBeenOpened; // android + } else { + comic.info.hasBeenOpened = comic.info.hasBeenOpened || comicInfo.currentPage > 0; // ios (legacy) + } if (comic.info.lastTimeOpened.toULongLong() < comicInfo.lastTimeOpened.toULongLong() && comicInfo.lastTimeOpened.toULongLong() > 0) comic.info.lastTimeOpened = comicInfo.lastTimeOpened; diff --git a/YACReaderLibrary/db_helper.h b/YACReaderLibrary/db_helper.h index 4fd9726b..a843572c 100644 --- a/YACReaderLibrary/db_helper.h +++ b/YACReaderLibrary/db_helper.h @@ -75,7 +75,7 @@ public: static void setComicAsReading(qulonglong libraryId, const ComicInfo &comicInfo); [[deprecated("Server v1")]] static void updateFromRemoteClient(qulonglong libraryId, const ComicInfo &comicInfo); static void updateReadingRemoteProgress(const ComicInfo &comicInfo, QSqlDatabase &db); - static QMap> updateFromRemoteClient(const QMap> &comics); + static QMap> updateFromRemoteClient(const QMap> &comics, bool clientSendsHasBeenOpened); static void updateFromRemoteClientWithHash(const QList &comics); static void renameLabel(qulonglong id, const QString &name, QSqlDatabase &db); static void renameList(qulonglong id, const QString &name, QSqlDatabase &db); diff --git a/YACReaderLibrary/server/controllers/v2/synccontroller_v2.cpp b/YACReaderLibrary/server/controllers/v2/synccontroller_v2.cpp index dc9de808..3b34ba70 100644 --- a/YACReaderLibrary/server/controllers/v2/synccontroller_v2.cpp +++ b/YACReaderLibrary/server/controllers/v2/synccontroller_v2.cpp @@ -37,14 +37,18 @@ void SyncControllerV2::service(HttpRequest &request, HttpResponse &response) auto libraries = DBHelper::getLibraries(); + bool clientSendsHasBeenOpened = false; + foreach (QString comicInfo, data) { QList comicInfoProgress = comicInfo.split("\t"); - if (comicInfoProgress.length() >= 8) { + if (comicInfoProgress.length() >= 9) { if (comicInfoProgress.at(0) != "u") { continue; } + clientSendsHasBeenOpened = true; + auto libraryUuid = QUuid(comicInfoProgress.at(1)); if (!libraryUuid.isNull()) { auto libraryId = libraries.getIdFromUuid(libraryUuid); @@ -66,7 +70,9 @@ void SyncControllerV2::service(HttpRequest &request, HttpResponse &response) lastTimeOpened = comicInfoProgress.at(6).toULong(); info.lastTimeOpened = lastTimeOpened; - info.read = comicInfoProgress.at(7).toInt(); + info.hasBeenOpened = comicInfoProgress.at(7).toInt(); + + info.read = comicInfoProgress.at(8).toInt(); if (!comics.contains(libraryId)) { comics[libraryId] = QList(); @@ -121,7 +127,7 @@ void SyncControllerV2::service(HttpRequest &request, HttpResponse &response) QJsonArray items; if (!comics.isEmpty()) { - auto moreRecentComicsFound = DBHelper::updateFromRemoteClient(comics); + auto moreRecentComicsFound = DBHelper::updateFromRemoteClient(comics, clientSendsHasBeenOpened); foreach (qulonglong libraryId, moreRecentComicsFound.keys()) { auto libraryUuid = DBHelper::getLibraries().getLibraryIdFromLegacyId(libraryId); diff --git a/YACReaderLibrary/server/yacreader_server_data_helper.cpp b/YACReaderLibrary/server/yacreader_server_data_helper.cpp index de2e7992..d43e0c51 100644 --- a/YACReaderLibrary/server/yacreader_server_data_helper.cpp +++ b/YACReaderLibrary/server/yacreader_server_data_helper.cpp @@ -112,6 +112,7 @@ QJsonObject YACReaderServerDataHelper::comicToJSON(const qulonglong libraryId, c variantToJson("title", QMetaType::QString, comic.info.title, json); variantToJson("universal_number", QMetaType::QString, comic.info.number, json); variantToJson("last_time_opened", QMetaType::LongLong, comic.info.lastTimeOpened, json); + json["has_been_opened"] = comic.info.hasBeenOpened; variantToJson("added", QMetaType::LongLong, comic.info.added, json); @@ -163,7 +164,6 @@ QJsonObject YACReaderServerDataHelper::fullComicToJSON(const qulonglong libraryI variantToJson("comic_vine_id", QMetaType::QString, comic.info.comicVineID, json); variantToJson("original_cover_size", QMetaType::QString, comic.info.originalCoverSize, json); json["edited"] = comic.info.edited; - json["has_been_opened"] = comic.info.hasBeenOpened; json["bookmark1"] = comic.info.bookmark1; json["bookmark2"] = comic.info.bookmark2; json["bookmark3"] = comic.info.bookmark3;