diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/data/TracksDao.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/data/TracksDao.kt index 4a9770fc8..c2467b94b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/data/TracksDao.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/data/TracksDao.kt @@ -49,7 +49,7 @@ abstract class TracksDao { @Query("DELETE FROM tracks WHERE manga_id = :mangaId") abstract suspend fun delete(mangaId: Long) - @Query("DELETE FROM tracks WHERE manga_id NOT IN (SELECT manga_id FROM history UNION SELECT manga_id FROM favourites)") + @Query("DELETE FROM tracks WHERE manga_id NOT IN (SELECT manga_id FROM history UNION SELECT manga_id FROM favourites WHERE category_id IN (SELECT category_id FROM favourite_categories WHERE track = 1))") abstract suspend fun gc() @Upsert diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt index f0a7b8968..94f2b955d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt @@ -104,10 +104,8 @@ class TrackingRepository @Inject constructor( suspend fun clearCounters() = db.tracksDao.clearCounters() suspend fun gc() { - db.withTransaction { - db.tracksDao.gc() - db.trackLogsDao.gc() - } + db.tracksDao.gc() + db.trackLogsDao.gc() } suspend fun saveUpdates(updates: MangaUpdates) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt index 51e8dfe26..5c30e4d1d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt @@ -59,6 +59,12 @@ class FeedViewModel @Inject constructor( } }.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, listOf(LoadingState)) + init { + launchJob(Dispatchers.Default) { + repository.gc() + } + } + fun clearFeed(clearCounters: Boolean) { launchLoadingJob(Dispatchers.Default) { repository.clearLogs() diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesViewModel.kt index fedfd6bbe..ec066dba7 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesViewModel.kt @@ -56,6 +56,12 @@ class UpdatesViewModel @Inject constructor( emit(listOf(it.toErrorState(canRetry = false))) }.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, listOf(LoadingState)) + init { + launchJob(Dispatchers.Default) { + repository.gc() + } + } + override fun onRefresh() = Unit override fun onRetry() = Unit