From a0aa33a4997cb5df1d8b5257bc86d7e32310b3ed Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 29 Jun 2020 13:43:01 +0300 Subject: [PATCH] Option to clear updates feed --- .../koitharu/kotatsu/core/db/TrackLogsDao.kt | 3 +++ .../domain/tracking/TrackingRepository.kt | 4 ++++ .../ui/settings/HistorySettingsFragment.kt | 24 +++++++++++++++++++ app/src/main/res/values-ru/strings.xml | 2 ++ app/src/main/res/values/constants.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_history.xml | 6 +++++ 7 files changed, 42 insertions(+) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/TrackLogsDao.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/TrackLogsDao.kt index 547fed576..dc4ce6e01 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/TrackLogsDao.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/TrackLogsDao.kt @@ -22,4 +22,7 @@ interface TrackLogsDao { @Query("DELETE FROM track_logs WHERE manga_id NOT IN (SELECT manga_id FROM tracks)") suspend fun cleanup() + + @Query("SELECT COUNT(*) FROM track_logs") + suspend fun count(): Int } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/tracking/TrackingRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/tracking/TrackingRepository.kt index 6b1a3bdde..60a46ebfd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/tracking/TrackingRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/tracking/TrackingRepository.kt @@ -44,6 +44,10 @@ class TrackingRepository : KoinComponent { } } + suspend fun count() = db.trackLogsDao.count() + + suspend fun clearLogs() = db.trackLogsDao.clear() + suspend fun cleanup() { db.withTransaction { db.tracksDao.cleanup() diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/settings/HistorySettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/settings/HistorySettingsFragment.kt index 92ba5f549..435b73b23 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/settings/HistorySettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/settings/HistorySettingsFragment.kt @@ -9,6 +9,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.local.Cache +import org.koitharu.kotatsu.domain.tracking.TrackingRepository import org.koitharu.kotatsu.ui.common.BasePreferenceFragment import org.koitharu.kotatsu.ui.search.MangaSuggestionsProvider import org.koitharu.kotatsu.utils.CacheUtils @@ -17,6 +18,10 @@ import org.koitharu.kotatsu.utils.ext.getDisplayMessage class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cache) { + private val trackerRepo by lazy { + TrackingRepository() + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_history) findPreference(R.string.key_pages_cache_clear)?.let { pref -> @@ -39,6 +44,12 @@ class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cach val items = MangaSuggestionsProvider.getItemsCount(p.context) p.summary = p.context.resources.getQuantityString(R.plurals.items, items, items) } + findPreference(R.string.key_updates_feed_clear)?.let { p -> + lifecycleScope.launchWhenResumed { + val items = trackerRepo.count() + p.summary = p.context.resources.getQuantityString(R.plurals.items, items, items) + } + } } override fun onPreferenceTreeClick(preference: Preference): Boolean { @@ -62,6 +73,19 @@ class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cach ).show() true } + getString(R.string.key_updates_feed_clear) -> { + lifecycleScope.launch { + trackerRepo.clearLogs() + preference.summary = preference.context.resources + .getQuantityString(R.plurals.items, 0, 0) + Snackbar.make( + view ?: return@launch, + R.string.updates_feed_cleared, + Snackbar.LENGTH_SHORT + ).show() + } + true + } else -> super.onPreferenceTreeClick(preference) } } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1306bd976..57db050c6 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -140,4 +140,6 @@ Новая версия: %s Размер: %s Ожидание подключения… + Очистить ленту обновлений + Лента обновлений очищена \ No newline at end of file diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 92c2d4f00..694073c15 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -9,6 +9,7 @@ pages_cache_clear thumbs_cache_clear search_history_clear + updates_feed_clear grid_size remote_sources local_storage diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 215a2316c..a67b32984 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -141,4 +141,6 @@ New version: %s Size: %s Waiting for network… + Clear updates feed + Updates feed cleared \ No newline at end of file diff --git a/app/src/main/res/xml/pref_history.xml b/app/src/main/res/xml/pref_history.xml index f26371f0c..c05b209c9 100644 --- a/app/src/main/res/xml/pref_history.xml +++ b/app/src/main/res/xml/pref_history.xml @@ -9,6 +9,12 @@ android:title="@string/clear_search_history" app:iconSpaceReserved="false" /> + +