Depend on sdk-common with liquid feature (#452)

* Add copy script to packages/react-native makefile
  * Reorder scripts
* Depend on sdk-common with liquid feature
  * chore: cargo update
* Generate Dart bindings
* Generate UniFFI bindings
* Simplify import resolution by using prelude::*
  * Applies changes from https://github.com/breez/breez-sdk-greenlight/pull/1078
This commit is contained in:
Erdem Yerebasmaz
2024-08-20 18:50:27 +03:00
committed by GitHub
parent 0cb02ce435
commit 5248dfc235
17 changed files with 1368 additions and 622 deletions

View File

@@ -535,6 +535,54 @@ fun asLimitsList(arr: ReadableArray): List<Limits> {
return list
}
fun asLiquidAddressData(liquidAddressData: ReadableMap): LiquidAddressData? {
if (!validateMandatoryFields(
liquidAddressData,
arrayOf(
"address",
"network",
),
)
) {
return null
}
val address = liquidAddressData.getString("address")!!
val network = liquidAddressData.getString("network")?.let { asNetwork(it) }!!
val assetId = if (hasNonNullKey(liquidAddressData, "assetId")) liquidAddressData.getString("assetId") else null
val amountSat = if (hasNonNullKey(liquidAddressData, "amountSat")) liquidAddressData.getDouble("amountSat").toULong() else null
val label = if (hasNonNullKey(liquidAddressData, "label")) liquidAddressData.getString("label") else null
val message = if (hasNonNullKey(liquidAddressData, "message")) liquidAddressData.getString("message") else null
return LiquidAddressData(
address,
network,
assetId,
amountSat,
label,
message,
)
}
fun readableMapOf(liquidAddressData: LiquidAddressData): ReadableMap =
readableMapOf(
"address" to liquidAddressData.address,
"network" to liquidAddressData.network.name.lowercase(),
"assetId" to liquidAddressData.assetId,
"amountSat" to liquidAddressData.amountSat,
"label" to liquidAddressData.label,
"message" to liquidAddressData.message,
)
fun asLiquidAddressDataList(arr: ReadableArray): List<LiquidAddressData> {
val list = ArrayList<LiquidAddressData>()
for (value in arr.toArrayList()) {
when (value) {
is ReadableMap -> list.add(asLiquidAddressData(value)!!)
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
}
}
return list
}
fun asListPaymentsRequest(listPaymentsRequest: ReadableMap): ListPaymentsRequest? {
if (!validateMandatoryFields(
listPaymentsRequest,
@@ -2298,6 +2346,9 @@ fun asInputType(inputType: ReadableMap): InputType? {
if (type == "bitcoinAddress") {
return InputType.BitcoinAddress(inputType.getMap("address")?.let { asBitcoinAddressData(it) }!!)
}
if (type == "liquidAddress") {
return InputType.LiquidAddress(inputType.getMap("address")?.let { asLiquidAddressData(it) }!!)
}
if (type == "bolt11") {
return InputType.Bolt11(inputType.getMap("invoice")?.let { asLnInvoice(it) }!!)
}
@@ -2329,6 +2380,10 @@ fun readableMapOf(inputType: InputType): ReadableMap? {
pushToMap(map, "type", "bitcoinAddress")
pushToMap(map, "address", readableMapOf(inputType.address))
}
is InputType.LiquidAddress -> {
pushToMap(map, "type", "liquidAddress")
pushToMap(map, "address", readableMapOf(inputType.address))
}
is InputType.Bolt11 -> {
pushToMap(map, "type", "bolt11")
pushToMap(map, "invoice", readableMapOf(inputType.invoice))