Option to automatically clean read chapters

This commit is contained in:
Koitharu
2024-03-13 10:06:39 +02:00
parent 8313d6966f
commit b8e48d8b8a
4 changed files with 20 additions and 1 deletions

View File

@@ -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"

View File

@@ -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<ImportWorker>()
.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()
}

View File

@@ -628,4 +628,6 @@
<string name="chapters_deleted_pattern">Removed %1$s, cleared %2$s</string>
<string name="delete_read_chapters_summary">Delete chapters you have already read from local storage to free up space</string>
<string name="delete_read_chapters_prompt">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</string>
<string name="delete_read_chapters_auto">Delete read chapters automatically</string>
<string name="runs_on_app_start">Runs when the application starts</string>
</resources>

View File

@@ -89,6 +89,12 @@
android:summary="@string/delete_read_chapters_summary"
android:title="@string/delete_read_chapters" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="chapters_clear_auto"
android:summary="@string/runs_on_app_start"
android:title="@string/delete_read_chapters_auto" />
</PreferenceCategory>
</PreferenceScreen>