From 80351cd594f4ce8c3d595edb8b393e154b487edf Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Mon, 22 Jan 2024 02:27:45 +0600 Subject: [PATCH] Fix issues when updating extensions (cherry picked from commit cb068984303f811692531bf6f14902ae118d8ac7) --- .../eu/kanade/presentation/browse/ExtensionsScreen.kt | 8 +++++++- .../eu/kanade/tachiyomi/extension/ExtensionManager.kt | 4 ++++ .../tachiyomi/extension/util/ExtensionInstallReceiver.kt | 3 +-- 3 files changed, 12 insertions(+), 3 deletions(-) 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 d88399eb9..f1619177e 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt @@ -204,7 +204,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 e6c80a306..04e51f951 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -404,6 +404,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 -> {} } }