rename example
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package com.bitcointxoko.gudariwallet.util
|
||||
|
||||
import org.json.JSONArray
|
||||
|
||||
/**
|
||||
* Stateless helpers for parsing LNURL-pay step-1 metadata fields.
|
||||
* Shared between [com.bitcointxoko.gudariwallet.data.LNbitsWalletRepository]
|
||||
* and [com.bitcointxoko.gudariwallet.ui.WalletViewModel] so neither duplicates
|
||||
* the logic.
|
||||
*/
|
||||
object LnurlMetadataParser {
|
||||
|
||||
/**
|
||||
* Extracts the `text/plain` description from a LNURL-pay metadata JSON string.
|
||||
* The metadata field is a JSON array of [type, value] pairs, e.g.:
|
||||
* [["text/plain","Pay me"],["image/png;base64","..."]]
|
||||
* Returns an empty string if the field is null, blank, or unparseable.
|
||||
*/
|
||||
fun parseDescription(metadata: String?): String {
|
||||
if (metadata.isNullOrBlank()) return ""
|
||||
return runCatching {
|
||||
val array = JSONArray(metadata)
|
||||
(0 until array.length())
|
||||
.map { array.getJSONArray(it) }
|
||||
.firstOrNull { it.getString(0) == "text/plain" }
|
||||
?.getString(1) ?: ""
|
||||
}.getOrDefault("")
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the host portion of [callback] for display purposes.
|
||||
* Returns an empty string if [callback] is null, blank, or not a valid URI.
|
||||
*/
|
||||
fun extractDomain(callback: String?): String {
|
||||
if (callback.isNullOrBlank()) return ""
|
||||
return runCatching { java.net.URI(callback).host ?: "" }.getOrDefault("")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the display label for a LNURL payment target.
|
||||
* If [lnurl] is a Lightning Address (contains '@'), returns it as-is.
|
||||
* Otherwise returns the [domain] of the LNURL endpoint.
|
||||
*/
|
||||
fun payingToLabel(lnurl: String, domain: String): String =
|
||||
if ('@' in lnurl) lnurl else domain
|
||||
Reference in New Issue
Block a user