From 0015c5704a84daa28dd16e15fed84b7822203b50 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 12 Aug 2024 17:30:08 +0300 Subject: [PATCH] Fix ignoring external sources in global search --- .../explore/data/MangaSourcesRepository.kt | 26 ++++++++++++------- .../tracker/ui/updates/UpdatesFragment.kt | 1 + 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt index e2bc04cc2..5965308b8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/explore/data/MangaSourcesRepository.kt @@ -61,7 +61,13 @@ class MangaSourcesRepository @Inject constructor( suspend fun getEnabledSources(): List { assimilateNewSources() val order = settings.sourcesSortOrder - return dao.findAllEnabled(order).toSources(settings.isNsfwContentDisabled, order) + return dao.findAllEnabled(order).toSources(settings.isNsfwContentDisabled, order).let { enabled -> + val external = getExternalSources() + val list = ArrayList(enabled.size + external.size) + external.mapTo(list) { MangaSourceInfo(it, isEnabled = true, isPinned = true) } + list.addAll(enabled) + list + } } suspend fun getPinnedSources(): Set { @@ -308,8 +314,6 @@ class MangaSourcesRepository @Inject constructor( } private fun observeExternalSources(): Flow> { - val intent = Intent("app.kotatsu.parser.PROVIDE_MANGA") - val pm = context.packageManager return callbackFlow { val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { @@ -333,15 +337,19 @@ class MangaSourcesRepository @Inject constructor( }.onStart { emit(null) }.map { - pm.queryIntentContentProviders(intent, 0).map { resolveInfo -> - ExternalMangaSource( - packageName = resolveInfo.providerInfo.packageName, - authority = resolveInfo.providerInfo.authority, - ) - } + getExternalSources() }.distinctUntilChanged() } + private fun getExternalSources() = context.packageManager.queryIntentContentProviders( + Intent("app.kotatsu.parser.PROVIDE_MANGA"), 0, + ).map { resolveInfo -> + ExternalMangaSource( + packageName = resolveInfo.providerInfo.packageName, + authority = resolveInfo.providerInfo.authority, + ) + } + private fun List.toSources( skipNsfwSources: Boolean, sortOrder: SourcesSortOrder?, diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesFragment.kt index 73f562648..8fe56b9a3 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/ui/updates/UpdatesFragment.kt @@ -26,6 +26,7 @@ class UpdatesFragment : MangaListFragment() { return when (item.itemId) { R.id.action_remove -> { viewModel.remove(controller.snapshot()) + mode.finish() true }