From 32b184a9cd192a349ca35222e635c2d34a9d1c40 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 14 Mar 2025 13:57:44 -0400 Subject: [PATCH] Improves lightning error messages --- .../service/lnurl/LightningAddressResolver.kt | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt index 40ecb84b1c..b212ccce1f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt @@ -21,6 +21,7 @@ package com.vitorpamplona.amethyst.service.lnurl import android.content.Context +import android.util.Log import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.R @@ -166,12 +167,24 @@ class LightningAddressResolver { response: Response, context: Context, ): String { + val body = response.body.string() + val errorMessage = runCatching { - jacksonObjectMapper().readTree(response.body.string()) + jacksonObjectMapper().readTree(body) }.getOrNull()?.let { tree -> - val status = tree.get("status")?.asText() - val message = tree.get("message")?.asText() + val errorNode = tree.get("error") + val messageNode = tree.get("message") + val statusNode = tree.get("status") + + if (tree.get("error").isBoolean && messageNode != null) { + if (errorNode.asBoolean() == true) { + return messageNode.asText() + } + } + + val status = statusNode?.asText() + val message = messageNode?.asText() if (status == "error" && message != null) { message @@ -180,6 +193,10 @@ class LightningAddressResolver { } } + if (errorMessage == null) { + Log.d("LightningAddressResolver", "Error parsing LNResponse: $body") + } + return errorMessage ?: HttpStatusMessages.resourceIdFor(response.code)?.let { stringRes(context, it) } ?: response.message.ifBlank { null }