From b0843fbbb25153e7397d902012df7801f277a98e Mon Sep 17 00:00:00 2001 From: jpirnay Date: Wed, 15 Apr 2026 10:40:19 +0200 Subject: [PATCH] Review fixes --- src/BookmarkStore.h | 3 +-- src/GlobalBookmarkIndex.cpp | 6 +++++- src/activities/home/GlobalBookmarksActivity.cpp | 4 +--- src/activities/home/HomeActivity.cpp | 2 +- src/activities/reader/TxtReaderActivity.cpp | 16 ++++++++++++---- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/BookmarkStore.h b/src/BookmarkStore.h index 0f41d231..5e228604 100644 --- a/src/BookmarkStore.h +++ b/src/BookmarkStore.h @@ -83,7 +83,7 @@ class BookmarkStore { return; } - if (bookmarks.size() > UINT16_MAX) { + if (bookmarks.size() > MAX_BOOKMARKS) { LOG_ERR("BKM", "Too many bookmarks to save: %u", static_cast(bookmarks.size())); return; } @@ -109,7 +109,6 @@ class BookmarkStore { } } - bool closeOk = false; if (ok) { if (!f.close()) { LOG_ERR("BKM", "Failed to close bookmarks file"); diff --git a/src/GlobalBookmarkIndex.cpp b/src/GlobalBookmarkIndex.cpp index 1b7e6b1f..68e8665e 100644 --- a/src/GlobalBookmarkIndex.cpp +++ b/src/GlobalBookmarkIndex.cpp @@ -176,7 +176,11 @@ bool GlobalBookmarkIndex::reconcile() { entries.erase(std::remove_if(entries.begin(), entries.end(), [](const Entry& e) { if (!Storage.exists(e.sourcePath.c_str())) { - LOG_DBG("GBI", "Dropping orphan entry: %s", e.sourcePath.c_str()); + LOG_DBG("GBI", "Dropping orphan entry: missing sourcePath=%s", e.sourcePath.c_str()); + return true; + } + if (!Storage.exists(e.cacheDir.c_str())) { + LOG_DBG("GBI", "Dropping orphan entry: missing cacheDir=%s", e.cacheDir.c_str()); return true; } return false; diff --git a/src/activities/home/GlobalBookmarksActivity.cpp b/src/activities/home/GlobalBookmarksActivity.cpp index bf394d29..79c2ce86 100644 --- a/src/activities/home/GlobalBookmarksActivity.cpp +++ b/src/activities/home/GlobalBookmarksActivity.cpp @@ -20,9 +20,7 @@ void GlobalBookmarksActivity::onEnter() { Activity::onEnter(); - if (GLOBAL_BOOKMARKS.reconcile()) { - GLOBAL_BOOKMARKS.save(); - } + GLOBAL_BOOKMARKS.reconcile(); rebuildRows(); const int first = firstSelectableIndex(); diff --git a/src/activities/home/HomeActivity.cpp b/src/activities/home/HomeActivity.cpp index 53dd435a..f3bade9c 100644 --- a/src/activities/home/HomeActivity.cpp +++ b/src/activities/home/HomeActivity.cpp @@ -260,7 +260,7 @@ void HomeActivity::loop() { if (firstRenderDone && !recentsLoaded && !recentsLoading) { const auto& metrics = UITheme::getInstance().getMetrics(); const Rect contentRect = UITheme::getContentRect(renderer, true, false); - const int menuItemCount = hasOpdsUrl ? 6 : 5; + const int menuItemCount = getMenuItemCount(); const HomeScreenLayout layout = computeHomeScreenLayout(metrics, contentRect.height, menuItemCount); loadRecentCovers(getHomeCoverRenderHeight(layout)); return; diff --git a/src/activities/reader/TxtReaderActivity.cpp b/src/activities/reader/TxtReaderActivity.cpp index ecd8b074..30bc3b58 100644 --- a/src/activities/reader/TxtReaderActivity.cpp +++ b/src/activities/reader/TxtReaderActivity.cpp @@ -438,6 +438,8 @@ void TxtReaderActivity::applyPendingBookmarkJump() { return; } LOG_DBG("TRS", "Applying pending bookmark jump: page=%u", jump.pageNumber); + + bool persisted = false; FsFile f; if (Storage.openFileForWrite("TRS", txt->getCachePath() + "/progress.bin", f)) { uint8_t data[6] = {0}; @@ -445,11 +447,17 @@ void TxtReaderActivity::applyPendingBookmarkJump() { data[1] = (jump.pageNumber >> 8) & 0xFF; // Offset bytes stay 0: loadProgress reads only the page, and the lazy // initializeReader() rebuilds the page index on first render anyway. - f.write(data, 6); - f.close(); + if (f.write(data, 6) == 6) { + persisted = f.close(); + } else { + f.close(); + } + } + + if (persisted) { + jump.clear(); + APP_STATE.saveToFile(); } - jump.clear(); - APP_STATE.saveToFile(); } void TxtReaderActivity::loadProgress() {