From 77ac40b4453d0714af4a951a2d16b82fc84a0152 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 19 Oct 2022 11:23:21 +0300 Subject: [PATCH] Option to clear new chapters counters --- .../org/koitharu/kotatsu/tracker/data/TracksDao.kt | 3 +++ .../kotatsu/tracker/domain/TrackingRepository.kt | 2 ++ .../kotatsu/tracker/ui/feed/FeedMenuProvider.kt | 12 +++++++----- .../kotatsu/tracker/ui/feed/FeedViewModel.kt | 5 ++++- app/src/main/res/values/strings.xml | 1 + 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/data/TracksDao.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/data/TracksDao.kt index d248de40e..d00ce5fc5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/data/TracksDao.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/data/TracksDao.kt @@ -43,6 +43,9 @@ abstract class TracksDao { @Query("DELETE FROM tracks") abstract suspend fun clear() + @Query("UPDATE tracks SET chapters_new = 0") + abstract suspend fun clearCounters() + @Insert(onConflict = OnConflictStrategy.IGNORE) abstract suspend fun insert(entity: TrackEntity): Long diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt index a9aac2ce1..c1038f83e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt @@ -98,6 +98,8 @@ class TrackingRepository @Inject constructor( suspend fun clearLogs() = db.trackLogsDao.clear() + suspend fun clearCounters() = db.tracksDao.clearCounters() + suspend fun gc() { db.withTransaction { db.tracksDao.gc() diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedMenuProvider.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedMenuProvider.kt index e20d67933..e25f83428 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedMenuProvider.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedMenuProvider.kt @@ -6,9 +6,9 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import androidx.core.view.MenuProvider -import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.base.ui.dialog.CheckBoxAlertDialog import org.koitharu.kotatsu.settings.SettingsActivity import org.koitharu.kotatsu.tracker.work.TrackWorker @@ -39,13 +39,15 @@ class FeedMenuProvider( } R.id.action_clear_feed -> { - MaterialAlertDialogBuilder(context) + CheckBoxAlertDialog.Builder(context) .setTitle(R.string.clear_updates_feed) .setMessage(R.string.text_clear_updates_feed_prompt) .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(R.string.clear) { _, _ -> - viewModel.clearFeed() - }.show() + .setCheckBoxChecked(true) + .setCheckBoxText(R.string.clear_new_chapters_counters) + .setPositiveButton(R.string.clear) { _, isChecked -> + viewModel.clearFeed(isChecked) + }.create().show() true } diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt index 1401873e8..12dbdf497 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/feed/FeedViewModel.kt @@ -50,9 +50,12 @@ class FeedViewModel @Inject constructor( } }.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, listOf(LoadingState)) - fun clearFeed() { + fun clearFeed(clearCounters: Boolean) { launchLoadingJob(Dispatchers.Default) { repository.clearLogs() + if (clearCounters) { + repository.clearCounters() + } onFeedCleared.postCall(Unit) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd35152c6..e3e1ef469 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -396,4 +396,5 @@ Network is not available Turn on Wi-Fi or mobile network to read manga online Server side error (%1$d). Please try again later + Also clear information about new chapters