mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Add badge to bottom bar Updates tab indicating how many unread chapter updates are available (#5620)
Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
		| @@ -291,6 +291,7 @@ class LibraryUpdateService( | ||||
|         val failedUpdates = CopyOnWriteArrayList<Pair<Manga, String?>>() | ||||
|         val hasDownloads = AtomicBoolean(false) | ||||
|         val loggedServices by lazy { trackManager.services.filter { it.isLogged } } | ||||
|         val currentUnreadUpdatesCount = preferences.libraryUnreadUpdatesCount().get() | ||||
|  | ||||
|         withIOContext { | ||||
|             mangaToUpdate.groupBy { it.source } | ||||
| @@ -354,6 +355,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) | ||||
|             } | ||||
|   | ||||
| @@ -133,6 +133,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" | ||||
|  | ||||
|   | ||||
| @@ -238,6 +238,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()) | ||||
|  | ||||
|   | ||||
| @@ -68,6 +68,7 @@ import eu.kanade.tachiyomi.util.view.setNavigationBarTransparentCompat | ||||
| 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 | ||||
|  | ||||
| @@ -227,6 +228,10 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         merge(preferences.libraryUpdateShowTabBadge().asFlow(), preferences.libraryUnreadUpdatesCount().asFlow()) | ||||
|             .onEach { setUnreadUpdatesBadge() } | ||||
|             .launchIn(lifecycleScope) | ||||
|  | ||||
|         preferences.extensionUpdatesCount() | ||||
|             .asImmediateFlow { setExtensionsBadge() } | ||||
|             .launchIn(lifecycleScope) | ||||
| @@ -349,6 +354,15 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     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) { | ||||
|   | ||||
| @@ -105,6 +105,9 @@ class UpdatesPresenter : BasePresenter<UpdatesController>() { | ||||
|                 } | ||||
|                 setDownloadedChapters(list) | ||||
|                 chapters = list | ||||
|  | ||||
|                 //Set unread chapter count for bottom bar badge | ||||
|                 preferences.libraryUnreadUpdatesCount().set(list.count { !it.read }) | ||||
|             } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -199,6 +199,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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user