diff --git a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt index 8e6c7913b..d08a2d93b 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt @@ -203,7 +203,13 @@ private fun ExtensionContent( items( items = items, contentType = { "item" }, - key = { "extension-${it.hashCode()}" }, + key = { item -> + when (item.extension) { + is Extension.Untrusted -> "extension-untrusted-${item.hashCode()}" + is Extension.Installed -> "extension-installed-${item.hashCode()}" + is Extension.Available -> "extension-available-${item.hashCode()}" + } + }, ) { item -> ExtensionItem( modifier = Modifier.animateItemPlacement(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index b252c0fbe..2c119a18b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -338,6 +338,10 @@ class ExtensionManager( } override fun onExtensionUntrusted(extension: Extension.Untrusted) { + val installedExtension = _installedExtensionsFlow.value + .find { it.pkgName == extension.pkgName } + ?: return + _installedExtensionsFlow.value -= installedExtension _untrustedExtensionsFlow.value += extension } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt index 6a3e21860..3d4b360c9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt @@ -70,8 +70,7 @@ internal class ExtensionInstallReceiver(private val listener: Listener) : launchNow { when (val result = getExtensionFromIntent(context, intent)) { is LoadResult.Success -> listener.onExtensionUpdated(result.extension) - // Not needed as a package can't be upgraded if the signature is different - // is LoadResult.Untrusted -> {} + is LoadResult.Untrusted -> listener.onExtensionUntrusted(result.extension) else -> {} } }