Fix null pointer exception on Extension Detail screen (#7666)

This commit is contained in:
Andreas 2022-07-31 23:17:36 +02:00 committed by GitHub
parent bfd22f8f2d
commit 6c7b3d7811
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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)