From 0abac47ff2ad05b59f532675bd219d623cc272a6 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 29 Mar 2023 16:21:11 -0400 Subject: [PATCH] More forgiving Wallet Connect interface (nsec or hexes are accepted, relay url is trimmed and cleaned up, if relay doesn't have a wss://, adds one) --- .../vitorpamplona/amethyst/service/Nip47.kt | 3 +- .../amethyst/ui/note/UpdateZapAmountDialog.kt | 32 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47.kt index 8b38638b3..4fb1bdcde 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/Nip47.kt @@ -1,10 +1,11 @@ package com.vitorpamplona.amethyst.ui.note import android.net.Uri +import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.decodePublicKey import com.vitorpamplona.amethyst.model.toHexKey -data class Nip47URI(val pubKeyHex: String, val relayUri: String?, val secret: String?) +data class Nip47URI(val pubKeyHex: HexKey, val relayUri: String?, val secret: HexKey?) // Rename to the corect nip number when ready. object Nip47 { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt index b4c0fd4af..8315f59b5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt @@ -114,20 +114,38 @@ class UpdateZapAmountViewModel : ViewModel() { account?.changeZapAmounts(amountSet) if (walletConnectRelay.text.isNotBlank() && walletConnectPubkey.text.isNotBlank()) { + val pubkeyHex = try { + decodePublicKey(walletConnectPubkey.text.trim()).toHexKey() + } catch (e: Exception) { + null + } + + val relayUrl = walletConnectRelay.text.ifBlank { null }?.let { + var addedWSS = + if (!it.startsWith("wss://") && !it.startsWith("ws://")) "wss://$it" else it + if (addedWSS.endsWith("/")) addedWSS = addedWSS.dropLast(1) + + addedWSS + } + val unverifiedPrivKey = walletConnectSecret.text.ifBlank { null } - val privKey = try { + val privKeyHex = try { unverifiedPrivKey?.let { decodePublicKey(it).toHexKey() } } catch (e: Exception) { null } - account?.changeZapPaymentRequest( - Nip47URI( - walletConnectPubkey.text, - walletConnectRelay.text.ifBlank { null }, - privKey + if (pubkeyHex != null) { + account?.changeZapPaymentRequest( + Nip47URI( + pubkeyHex, + relayUrl, + privKeyHex + ) ) - ) + } else { + account?.changeZapPaymentRequest(null) + } } else { account?.changeZapPaymentRequest(null) }