From 7265a9da36576947b85b6182bc7bede2c852d55e Mon Sep 17 00:00:00 2001 From: davotoula Date: Fri, 12 Jun 2026 12:50:41 +0200 Subject: [PATCH] refactor: extract duplicated string literals into constants (sonar) --- .../main/java/com/vitorpamplona/amethyst/model/Account.kt | 8 +++++--- .../screen/loggedIn/profile/payment/SendPaymentContent.kt | 8 +++++--- .../vitorpamplona/amethyst/cli/commands/OfferCommands.kt | 7 ++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index fb40b7eebf..8750b25737 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -287,6 +287,8 @@ import kotlin.coroutines.cancellation.CancellationException import com.vitorpamplona.quartz.experimental.nip95.header.thumbhash as nip95thumbhash import com.vitorpamplona.quartz.experimental.profileGallery.thumbhash as galleryThumbhash +private const val ONCHAIN_BACKEND_NOT_CONFIGURED = "Bitcoin chain backend is not configured" + @OptIn(DelicateCoroutinesApi::class) @Stable class Account( @@ -906,7 +908,7 @@ class Account( cache.onchainBackend ?: return OnchainZapSendResult.Failure( OnchainZapSendStage.LOADING_UTXOS, - "Bitcoin chain backend is not configured", + ONCHAIN_BACKEND_NOT_CONFIGURED, ) return OnchainZapSender.send( backend = backend, @@ -934,7 +936,7 @@ class Account( cache.onchainBackend ?: return OnchainZapSendResult.Failure( OnchainZapSendStage.LOADING_UTXOS, - "Bitcoin chain backend is not configured", + ONCHAIN_BACKEND_NOT_CONFIGURED, ) return OnchainZapSender.sendToAddress( backend = backend, @@ -961,7 +963,7 @@ class Account( cache.onchainBackend ?: return OnchainZapSendResult.Failure( OnchainZapSendStage.LOADING_UTXOS, - "Bitcoin chain backend is not configured", + ONCHAIN_BACKEND_NOT_CONFIGURED, ) return OnchainZapSender.sendSplit( backend = backend, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/payment/SendPaymentContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/payment/SendPaymentContent.kt index 9ee8ae1af2..d66338088a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/payment/SendPaymentContent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/payment/SendPaymentContent.kt @@ -733,6 +733,8 @@ private fun SectionLabel(text: String) { // Previews — fake data only; no account or network required. // --------------------------------------------------------------------------- +private const val PREVIEW_MESSAGE_LABEL = "Add a public message" + private val previewMethods = persistentListOf( PaymentMethodUi(ProfilePaymentMethod.LIGHTNING, copyValue = "alice@walletofsatoshi.com"), @@ -799,7 +801,7 @@ private fun SendPaymentLightningPreview() { message = "Thank you for all your work!", onMessageChange = {}, showMessageField = true, - messageLabel = "Add a public message", + messageLabel = PREVIEW_MESSAGE_LABEL, zapTypes = previewZapTypes, selectedZapType = LnZapEvent.ZapType.PUBLIC, onZapTypeChange = {}, @@ -871,7 +873,7 @@ private fun SendPaymentInProgressPreview() { message = "", onMessageChange = {}, showMessageField = true, - messageLabel = "Add a public message", + messageLabel = PREVIEW_MESSAGE_LABEL, zapTypes = null, selectedZapType = LnZapEvent.ZapType.PUBLIC, onZapTypeChange = {}, @@ -907,7 +909,7 @@ private fun SendPaymentSuccessPreview() { message = "", onMessageChange = {}, showMessageField = true, - messageLabel = "Add a public message", + messageLabel = PREVIEW_MESSAGE_LABEL, zapTypes = previewZapTypes, selectedZapType = LnZapEvent.ZapType.PUBLIC, onZapTypeChange = {}, diff --git a/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/OfferCommands.kt b/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/OfferCommands.kt index 65971e9773..1986e9305c 100644 --- a/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/OfferCommands.kt +++ b/cli/src/main/kotlin/com/vitorpamplona/amethyst/cli/commands/OfferCommands.kt @@ -51,6 +51,7 @@ import com.vitorpamplona.quartz.nip05DnsIdentifiers.Nip05Id */ object OfferCommands { private const val MAX_FOLLOW_HOPS = 3 + private const val ERR_NOT_A_NOFFER = "not a valid noffer pointer" suspend fun dispatch( dataDir: DataDir, @@ -113,7 +114,7 @@ object OfferCommands { val args = Args(rest) val offer = ClinkPointerParser.parse(args.positional(0, "noffer").trim()) as? NOffer - ?: return Output.error("bad_args", "not a valid noffer pointer") + ?: return Output.error("bad_args", ERR_NOT_A_NOFFER) Output.emit( mapOf( @@ -139,7 +140,7 @@ object OfferCommands { var offer = ClinkPointerParser.parse(args.positional(0, "noffer").trim()) as? NOffer - ?: return Output.error("bad_args", "not a valid noffer pointer") + ?: return Output.error("bad_args", ERR_NOT_A_NOFFER) val ctx = Context.open(dataDir) try { @@ -209,7 +210,7 @@ object OfferCommands { val offer = ClinkPointerParser.parse(args.positional(0, "noffer").trim()) as? NOffer - ?: return Output.error("bad_args", "not a valid noffer pointer") + ?: return Output.error("bad_args", ERR_NOT_A_NOFFER) val withFlag = args.flag("with") ?: return Output.error("bad_args", "offer pay needs --with to settle the fetched invoice")