mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2026-01-16 20:44:27 +01:00
Buy Bitcoin (#398)
* Add fiat on-ramp service * Use sdk-common MoonpayProvider * Bump flutter qr dependency * Bump sdk-common dependency
This commit is contained in:
@@ -114,6 +114,41 @@ fun asBitcoinAddressDataList(arr: ReadableArray): List<BitcoinAddressData> {
|
||||
return list
|
||||
}
|
||||
|
||||
fun asBuyBitcoinRequest(buyBitcoinRequest: ReadableMap): BuyBitcoinRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
buyBitcoinRequest,
|
||||
arrayOf(
|
||||
"prepareRes",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val prepareRes = buyBitcoinRequest.getMap("prepareRes")?.let { asPrepareBuyBitcoinResponse(it) }!!
|
||||
val redirectUrl = if (hasNonNullKey(buyBitcoinRequest, "redirectUrl")) buyBitcoinRequest.getString("redirectUrl") else null
|
||||
return BuyBitcoinRequest(
|
||||
prepareRes,
|
||||
redirectUrl,
|
||||
)
|
||||
}
|
||||
|
||||
fun readableMapOf(buyBitcoinRequest: BuyBitcoinRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"prepareRes" to readableMapOf(buyBitcoinRequest.prepareRes),
|
||||
"redirectUrl" to buyBitcoinRequest.redirectUrl,
|
||||
)
|
||||
|
||||
fun asBuyBitcoinRequestList(arr: ReadableArray): List<BuyBitcoinRequest> {
|
||||
val list = ArrayList<BuyBitcoinRequest>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asBuyBitcoinRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asConfig(config: ReadableMap): Config? {
|
||||
if (!validateMandatoryFields(
|
||||
config,
|
||||
@@ -1227,6 +1262,82 @@ fun asPaymentList(arr: ReadableArray): List<Payment> {
|
||||
return list
|
||||
}
|
||||
|
||||
fun asPrepareBuyBitcoinRequest(prepareBuyBitcoinRequest: ReadableMap): PrepareBuyBitcoinRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
prepareBuyBitcoinRequest,
|
||||
arrayOf(
|
||||
"provider",
|
||||
"amountSat",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val provider = prepareBuyBitcoinRequest.getString("provider")?.let { asBuyBitcoinProvider(it) }!!
|
||||
val amountSat = prepareBuyBitcoinRequest.getDouble("amountSat").toULong()
|
||||
return PrepareBuyBitcoinRequest(
|
||||
provider,
|
||||
amountSat,
|
||||
)
|
||||
}
|
||||
|
||||
fun readableMapOf(prepareBuyBitcoinRequest: PrepareBuyBitcoinRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"provider" to prepareBuyBitcoinRequest.provider.name.lowercase(),
|
||||
"amountSat" to prepareBuyBitcoinRequest.amountSat,
|
||||
)
|
||||
|
||||
fun asPrepareBuyBitcoinRequestList(arr: ReadableArray): List<PrepareBuyBitcoinRequest> {
|
||||
val list = ArrayList<PrepareBuyBitcoinRequest>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asPrepareBuyBitcoinRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asPrepareBuyBitcoinResponse(prepareBuyBitcoinResponse: ReadableMap): PrepareBuyBitcoinResponse? {
|
||||
if (!validateMandatoryFields(
|
||||
prepareBuyBitcoinResponse,
|
||||
arrayOf(
|
||||
"provider",
|
||||
"amountSat",
|
||||
"feesSat",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val provider = prepareBuyBitcoinResponse.getString("provider")?.let { asBuyBitcoinProvider(it) }!!
|
||||
val amountSat = prepareBuyBitcoinResponse.getDouble("amountSat").toULong()
|
||||
val feesSat = prepareBuyBitcoinResponse.getDouble("feesSat").toULong()
|
||||
return PrepareBuyBitcoinResponse(
|
||||
provider,
|
||||
amountSat,
|
||||
feesSat,
|
||||
)
|
||||
}
|
||||
|
||||
fun readableMapOf(prepareBuyBitcoinResponse: PrepareBuyBitcoinResponse): ReadableMap =
|
||||
readableMapOf(
|
||||
"provider" to prepareBuyBitcoinResponse.provider.name.lowercase(),
|
||||
"amountSat" to prepareBuyBitcoinResponse.amountSat,
|
||||
"feesSat" to prepareBuyBitcoinResponse.feesSat,
|
||||
)
|
||||
|
||||
fun asPrepareBuyBitcoinResponseList(arr: ReadableArray): List<PrepareBuyBitcoinResponse> {
|
||||
val list = ArrayList<PrepareBuyBitcoinResponse>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asPrepareBuyBitcoinResponse(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asPreparePayOnchainRequest(preparePayOnchainRequest: ReadableMap): PreparePayOnchainRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
preparePayOnchainRequest,
|
||||
@@ -2129,6 +2240,19 @@ fun asAesSuccessActionDataResultList(arr: ReadableArray): List<AesSuccessActionD
|
||||
return list
|
||||
}
|
||||
|
||||
fun asBuyBitcoinProvider(type: String): BuyBitcoinProvider = BuyBitcoinProvider.valueOf(camelToUpperSnakeCase(type))
|
||||
|
||||
fun asBuyBitcoinProviderList(arr: ReadableArray): List<BuyBitcoinProvider> {
|
||||
val list = ArrayList<BuyBitcoinProvider>()
|
||||
for (value in arr.toArrayList()) {
|
||||
when (value) {
|
||||
is String -> list.add(asBuyBitcoinProvider(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asInputType(inputType: ReadableMap): InputType? {
|
||||
val type = inputType.getString("type")
|
||||
|
||||
|
||||
@@ -351,6 +351,41 @@ class BreezSDKLiquidModule(
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun prepareBuyBitcoin(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val prepareBuyBitcoinRequest =
|
||||
asPrepareBuyBitcoinRequest(req)
|
||||
?: run { throw SdkException.Generic(errMissingMandatoryField("req", "PrepareBuyBitcoinRequest")) }
|
||||
val res = getBindingLiquidSdk().prepareBuyBitcoin(prepareBuyBitcoinRequest)
|
||||
promise.resolve(readableMapOf(res))
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun buyBitcoin(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val buyBitcoinRequest =
|
||||
asBuyBitcoinRequest(req) ?: run { throw SdkException.Generic(errMissingMandatoryField("req", "BuyBitcoinRequest")) }
|
||||
val res = getBindingLiquidSdk().buyBitcoin(buyBitcoinRequest)
|
||||
promise.resolve(res)
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun listPayments(
|
||||
req: ReadableMap,
|
||||
|
||||
Reference in New Issue
Block a user