From b8e48d8b8a59cc84a437618897a44246c7acf6a5 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 13 Mar 2024 10:06:39 +0200 Subject: [PATCH] Option to automatically clean read chapters --- .../org/koitharu/kotatsu/core/prefs/AppSettings.kt | 4 ++++ .../kotatsu/local/ui/LocalStorageCleanupWorker.kt | 9 ++++++++- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_user_data.xml | 6 ++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 3c3194a21..8bb7cfcd9 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -424,6 +424,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isStatsEnabled: Boolean get() = prefs.getBoolean(KEY_STATS_ENABLED, false) + val isAutoLocalChaptersCleanupEnabled: Boolean + get() = prefs.getBoolean(KEY_CHAPTERS_CLEAR_AUTO, false) + fun isTipEnabled(tip: String): Boolean { return prefs.getStringSet(KEY_TIPS_CLOSED, emptySet())?.contains(tip) != true } @@ -508,6 +511,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_HTTP_CACHE_CLEAR = "http_cache_clear" const val KEY_COOKIES_CLEAR = "cookies_clear" const val KEY_CHAPTERS_CLEAR = "chapters_clear" + const val KEY_CHAPTERS_CLEAR_AUTO = "chapters_clear_auto" const val KEY_THUMBS_CACHE_CLEAR = "thumbs_cache_clear" const val KEY_SEARCH_HISTORY_CLEAR = "search_history_clear" const val KEY_UPDATES_FEED_CLEAR = "updates_feed_clear" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/LocalStorageCleanupWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/LocalStorageCleanupWorker.kt index 5791a3391..cc6c6ccab 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/LocalStorageCleanupWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/ui/LocalStorageCleanupWorker.kt @@ -13,18 +13,25 @@ import androidx.work.await import dagger.assisted.Assisted import dagger.assisted.AssistedInject import org.koitharu.kotatsu.core.parser.MangaDataRepository +import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.local.data.LocalMangaRepository +import org.koitharu.kotatsu.local.domain.DeleteReadChaptersUseCase import java.util.concurrent.TimeUnit @HiltWorker class LocalStorageCleanupWorker @AssistedInject constructor( @Assisted appContext: Context, @Assisted params: WorkerParameters, + private val settings: AppSettings, private val localMangaRepository: LocalMangaRepository, private val dataRepository: MangaDataRepository, + private val deleteReadChaptersUseCase: DeleteReadChaptersUseCase, ) : CoroutineWorker(appContext, params) { override suspend fun doWork(): Result { + if (settings.isAutoLocalChaptersCleanupEnabled) { + deleteReadChaptersUseCase.invoke() + } return if (localMangaRepository.cleanup()) { dataRepository.cleanupLocalManga() Result.success() @@ -44,7 +51,7 @@ class LocalStorageCleanupWorker @AssistedInject constructor( val request = OneTimeWorkRequestBuilder() .setConstraints(constraints) .addTag(TAG) - .setBackoffCriteria(BackoffPolicy.LINEAR, 1, TimeUnit.MINUTES) + .setBackoffCriteria(BackoffPolicy.LINEAR, 10, TimeUnit.MINUTES) .build() WorkManager.getInstance(context).enqueueUniqueWork(TAG, ExistingWorkPolicy.KEEP, request).await() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2edea8b92..76b6ad7aa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -628,4 +628,6 @@ Removed %1$s, cleared %2$s Delete chapters you have already read from local storage to free up space This will permanently delete all chapters marked as read from your local storage. You can re-download it later, but the imported chapters may be lost forever + Delete read chapters automatically + Runs when the application starts diff --git a/app/src/main/res/xml/pref_user_data.xml b/app/src/main/res/xml/pref_user_data.xml index b972a9bc3..e83c93c7a 100644 --- a/app/src/main/res/xml/pref_user_data.xml +++ b/app/src/main/res/xml/pref_user_data.xml @@ -89,6 +89,12 @@ android:summary="@string/delete_read_chapters_summary" android:title="@string/delete_read_chapters" /> + +