From d7bc194813d98e00190d1c5627965f2fe94f57d9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 15:47:26 +0000 Subject: Fix logbook entries not reloading after SAF re-auth post-reinstall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LogbookRepository loaded entries once at init; after reinstall the SAF tree URI pref is wiped, so it loaded empty from the cleared legacy path and held that empty list for the session — even after the user re-granted SAF access. Fix: add LogbookRepository.reload() and call it in MainViewModel.onSafDirectorySelected() alongside reloadPastTracks(). The logbook JSON and photos already live in the SAF tree and survive reinstall; this just ensures they're read at the right moment. https://claude.ai/code/session_01KXYBuAHZkvv63DeUG6XaZD --- .../app/src/main/kotlin/org/terst/nav/logbook/LogbookRepository.kt | 7 +++++++ android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt | 1 + 2 files changed, 8 insertions(+) diff --git a/android-app/app/src/main/kotlin/org/terst/nav/logbook/LogbookRepository.kt b/android-app/app/src/main/kotlin/org/terst/nav/logbook/LogbookRepository.kt index dd65e4a..fe7b40d 100644 --- a/android-app/app/src/main/kotlin/org/terst/nav/logbook/LogbookRepository.kt +++ b/android-app/app/src/main/kotlin/org/terst/nav/logbook/LogbookRepository.kt @@ -25,4 +25,11 @@ class LogbookRepository(private val storage: LogbookStorage) { } fun getAll(): List = entries.toList() + + /** Re-reads entries from storage. Call after SAF is (re-)authorised post-reinstall. */ + fun reload() { + entries.clear() + entries.addAll(storage.loadAll()) + nextId = (entries.maxOfOrNull { it.id } ?: 0L) + 1L + } } diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt index f664aa9..a750d39 100644 --- a/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt +++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/MainViewModel.kt @@ -124,6 +124,7 @@ class MainViewModel( fun onSafDirectorySelected(treeUri: Uri) { trackRepository.initSafDirectory(treeUri) _safState.value = trackRepository.safState() + NavApplication.logbookRepository.reload() viewModelScope.launch { reloadPastTracks() } } -- cgit v1.2.3