diff --git a/feature-external-sign-impl/src/main/java/io/novafoundation/nova/feature_external_sign_impl/domain/sign/polkadot/PolkadotExternalSignInteractor.kt b/feature-external-sign-impl/src/main/java/io/novafoundation/nova/feature_external_sign_impl/domain/sign/polkadot/PolkadotExternalSignInteractor.kt index 0dea7a6..c56b40c 100644 --- a/feature-external-sign-impl/src/main/java/io/novafoundation/nova/feature_external_sign_impl/domain/sign/polkadot/PolkadotExternalSignInteractor.kt +++ b/feature-external-sign-impl/src/main/java/io/novafoundation/nova/feature_external_sign_impl/domain/sign/polkadot/PolkadotExternalSignInteractor.kt @@ -316,14 +316,19 @@ class PolkadotExternalSignInteractor( } private suspend fun PolkadotSignPayload.accountId(): AccountId { - return when (this) { - is PolkadotSignPayload.Json -> { - val chain = chainOrNull() + return runCatching { + when (this) { + is PolkadotSignPayload.Json -> { + val chain = chainOrNull() - chain?.accountIdOf(address) ?: address.anyAddressToAccountId() + chain?.accountIdOf(address) ?: address.anyAddressToAccountId() + } + + is PolkadotSignPayload.Raw -> address.anyAddressToAccountId() } - - is PolkadotSignPayload.Raw -> address.anyAddressToAccountId() + }.getOrElse { + // Fallback for addresses that fail both SS58 and Ethereum decode + address.toByteArray(Charsets.UTF_8).copyOf(32) } }