mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Fix null pointer exception on Extension Detail screen (#7666)
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user