From 6c7b3d78118c9c01aa51fc3c663c5a12c8f986dd Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 31 Jul 2022 23:17:36 +0200 Subject: [PATCH] Fix null pointer exception on Extension Detail screen (#7666) --- .../details/ExtensionDetailsPresenter.kt | 31 ++++++------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsPresenter.kt index c5693e036..e2595e0cd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsPresenter.kt @@ -14,10 +14,7 @@ import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.system.LocaleHelper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.drop -import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.take import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -36,13 +33,18 @@ class ExtensionDetailsPresenter( presenterScope.launchIO { extensionManager.getInstalledExtensionsFlow() .map { it.firstOrNull { it.pkgName == pkgName } } - .collectLatest { - state.extension = it + .collectLatest { extension -> + // If extension is null it's most likely uninstalled + if (extension == null) { + launchUI { + view?.onExtensionUninstalled() + } + return@collectLatest + } + state.extension = extension fetchExtensionSources() } } - - bindToUninstalledExtension() } private fun CoroutineScope.fetchExtensionSources() { @@ -63,21 +65,6 @@ class ExtensionDetailsPresenter( } } - private fun bindToUninstalledExtension() { - presenterScope.launchIO { - extensionManager.getInstalledExtensionsFlow() - .drop(1) - .filter { extensions -> extensions.none { it.pkgName == pkgName } } - .map { } - .take(1) - .collectLatest { - launchUI { - view?.onExtensionUninstalled() - } - } - } - } - fun uninstallExtension() { val extension = extension ?: return extensionManager.uninstallExtension(extension.pkgName)