Option to automatically clean read chapters
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user