diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index 6e702858d..7f6f9427a 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -370,6 +370,7 @@ class LibraryUpdateService( val failedUpdates = CopyOnWriteArrayList>() val hasDownloads = AtomicBoolean(false) val loggedServices by lazy { trackManager.services.filter { it.isLogged } } + val currentUnreadUpdatesCount = preferences.libraryUnreadUpdatesCount().get() withIOContext { mangaToUpdate.groupBy { it.source } @@ -434,6 +435,8 @@ class LibraryUpdateService( if (newUpdates.isNotEmpty()) { notifier.showUpdateNotifications(newUpdates) + val newChapterCount = newUpdates.sumOf { it.second.size } + preferences.libraryUnreadUpdatesCount().set(currentUnreadUpdatesCount + newChapterCount) if (hasDownloads.get()) { DownloadService.start(this) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 7471c48b9..7ae4e3b2f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -135,6 +135,8 @@ object PreferenceKeys { const val libraryUpdateRestriction = "library_update_restriction" + const val libraryUpdateShowTabBadge = "library_update_show_tab_badge" + const val libraryUpdateCategories = "library_update_categories" const val libraryUpdateCategoriesExclude = "library_update_categories_exclude" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 3943501db..f6e3d76d7 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -242,6 +242,9 @@ class PreferencesHelper(val context: Context) { fun libraryUpdateRestriction() = flowPrefs.getStringSet(Keys.libraryUpdateRestriction, setOf(ONLY_ON_WIFI)) + fun libraryUpdateShowTabBadge() = flowPrefs.getBoolean(Keys.libraryUpdateShowTabBadge, true) + fun libraryUnreadUpdatesCount() = flowPrefs.getInt("library_unread_updates_count", 0) + fun libraryUpdateCategories() = flowPrefs.getStringSet(Keys.libraryUpdateCategories, emptySet()) fun libraryUpdateCategoriesExclude() = flowPrefs.getStringSet(Keys.libraryUpdateCategoriesExclude, emptySet()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 7d7442f4f..c92c4bf0c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -75,6 +75,7 @@ import exh.uconfig.WarnConfigureDialogController import kotlinx.coroutines.delay import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import logcat.LogPriority import java.util.Date @@ -277,6 +278,10 @@ class MainActivity : BaseViewBindingActivity() { } // SY --> + merge(preferences.libraryUpdateShowTabBadge().asFlow(), preferences.libraryUnreadUpdatesCount().asFlow()) + .onEach { setUnreadUpdatesBadge() } + .launchIn(lifecycleScope) + preferences.extensionUpdatesCount() .asImmediateFlow { setExtensionsBadge() } .launchIn(lifecycleScope) @@ -405,6 +410,15 @@ class MainActivity : BaseViewBindingActivity() { } } + private fun setUnreadUpdatesBadge() { + val updates = if (preferences.libraryUpdateShowTabBadge().get()) preferences.libraryUnreadUpdatesCount().get() else 0 + if (updates > 0) { + nav.getOrCreateBadge(R.id.nav_updates).number = updates + } else { + nav.removeBadge(R.id.nav_updates) + } + } + private fun setExtensionsBadge() { val updates = preferences.extensionUpdatesCount().get() if (updates > 0) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt index 24f450a5a..96efe3db8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt @@ -105,6 +105,9 @@ class UpdatesPresenter : BasePresenter() { } setDownloadedChapters(list) chapters = list + + //Set unread chapter count for bottom bar badge + preferences.libraryUnreadUpdatesCount().set(list.count { !it.read }) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index 79f8f81b1..59387c90b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -225,6 +225,11 @@ class SettingsLibraryController : SettingsController() { titleRes = R.string.pref_update_only_non_completed defaultValue = false } + switchPreference { + key = Keys.libraryUpdateShowTabBadge + titleRes = R.string.pref_library_update_show_tab_badge + defaultValue = true + } preference { key = Keys.libraryUpdateCategories titleRes = R.string.categories diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a3754b04..3baf30b0a 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -223,6 +223,7 @@ Charging Restrictions: %s Only update ongoing manga + Show update count on bottom bar Automatically refresh metadata Check for new cover and details when updating library Automatically refresh trackers