mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2025-12-19 06:54:25 +01:00
remove old files
This commit is contained in:
@@ -1,908 +0,0 @@
|
|||||||
package com.breezliquidsdk
|
|
||||||
import breez_liquid_sdk.*
|
|
||||||
import com.facebook.react.bridge.*
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
fun asBackupRequest(backupRequest: ReadableMap): BackupRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
backupRequest,
|
|
||||||
arrayOf(),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val backupPath = if (hasNonNullKey(backupRequest, "backupPath")) backupRequest.getString("backupPath") else null
|
|
||||||
return BackupRequest(
|
|
||||||
backupPath,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(backupRequest: BackupRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"backupPath" to backupRequest.backupPath,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asBackupRequestList(arr: ReadableArray): List<BackupRequest> {
|
|
||||||
val list = ArrayList<BackupRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asBackupRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asConfig(config: ReadableMap): Config? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
config,
|
|
||||||
arrayOf(
|
|
||||||
"boltzUrl",
|
|
||||||
"electrumUrl",
|
|
||||||
"workingDir",
|
|
||||||
"network",
|
|
||||||
"paymentTimeoutSec",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val boltzUrl = config.getString("boltzUrl")!!
|
|
||||||
val electrumUrl = config.getString("electrumUrl")!!
|
|
||||||
val workingDir = config.getString("workingDir")!!
|
|
||||||
val network = config.getString("network")?.let { asNetwork(it) }!!
|
|
||||||
val paymentTimeoutSec = config.getDouble("paymentTimeoutSec").toULong()
|
|
||||||
return Config(
|
|
||||||
boltzUrl,
|
|
||||||
electrumUrl,
|
|
||||||
workingDir,
|
|
||||||
network,
|
|
||||||
paymentTimeoutSec,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(config: Config): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"boltzUrl" to config.boltzUrl,
|
|
||||||
"electrumUrl" to config.electrumUrl,
|
|
||||||
"workingDir" to config.workingDir,
|
|
||||||
"network" to config.network.name.lowercase(),
|
|
||||||
"paymentTimeoutSec" to config.paymentTimeoutSec,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asConfigList(arr: ReadableArray): List<Config> {
|
|
||||||
val list = ArrayList<Config>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asConfig(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asConnectRequest(connectRequest: ReadableMap): ConnectRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
connectRequest,
|
|
||||||
arrayOf(
|
|
||||||
"config",
|
|
||||||
"mnemonic",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val config = connectRequest.getMap("config")?.let { asConfig(it) }!!
|
|
||||||
val mnemonic = connectRequest.getString("mnemonic")!!
|
|
||||||
return ConnectRequest(
|
|
||||||
config,
|
|
||||||
mnemonic,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(connectRequest: ConnectRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"config" to readableMapOf(connectRequest.config),
|
|
||||||
"mnemonic" to connectRequest.mnemonic,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asConnectRequestList(arr: ReadableArray): List<ConnectRequest> {
|
|
||||||
val list = ArrayList<ConnectRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asConnectRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asGetInfoRequest(getInfoRequest: ReadableMap): GetInfoRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
getInfoRequest,
|
|
||||||
arrayOf(
|
|
||||||
"withScan",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val withScan = getInfoRequest.getBoolean("withScan")
|
|
||||||
return GetInfoRequest(
|
|
||||||
withScan,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(getInfoRequest: GetInfoRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"withScan" to getInfoRequest.withScan,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asGetInfoRequestList(arr: ReadableArray): List<GetInfoRequest> {
|
|
||||||
val list = ArrayList<GetInfoRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asGetInfoRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asGetInfoResponse(getInfoResponse: ReadableMap): GetInfoResponse? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
getInfoResponse,
|
|
||||||
arrayOf(
|
|
||||||
"balanceSat",
|
|
||||||
"pendingSendSat",
|
|
||||||
"pendingReceiveSat",
|
|
||||||
"pubkey",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val balanceSat = getInfoResponse.getDouble("balanceSat").toULong()
|
|
||||||
val pendingSendSat = getInfoResponse.getDouble("pendingSendSat").toULong()
|
|
||||||
val pendingReceiveSat = getInfoResponse.getDouble("pendingReceiveSat").toULong()
|
|
||||||
val pubkey = getInfoResponse.getString("pubkey")!!
|
|
||||||
return GetInfoResponse(
|
|
||||||
balanceSat,
|
|
||||||
pendingSendSat,
|
|
||||||
pendingReceiveSat,
|
|
||||||
pubkey,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(getInfoResponse: GetInfoResponse): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"balanceSat" to getInfoResponse.balanceSat,
|
|
||||||
"pendingSendSat" to getInfoResponse.pendingSendSat,
|
|
||||||
"pendingReceiveSat" to getInfoResponse.pendingReceiveSat,
|
|
||||||
"pubkey" to getInfoResponse.pubkey,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asGetInfoResponseList(arr: ReadableArray): List<GetInfoResponse> {
|
|
||||||
val list = ArrayList<GetInfoResponse>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asGetInfoResponse(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asLnInvoice(lnInvoice: ReadableMap): LnInvoice? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
lnInvoice,
|
|
||||||
arrayOf(
|
|
||||||
"bolt11",
|
|
||||||
"network",
|
|
||||||
"payeePubkey",
|
|
||||||
"paymentHash",
|
|
||||||
"timestamp",
|
|
||||||
"expiry",
|
|
||||||
"routingHints",
|
|
||||||
"paymentSecret",
|
|
||||||
"minFinalCltvExpiryDelta",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val bolt11 = lnInvoice.getString("bolt11")!!
|
|
||||||
val network = lnInvoice.getString("network")?.let { asNetwork(it) }!!
|
|
||||||
val payeePubkey = lnInvoice.getString("payeePubkey")!!
|
|
||||||
val paymentHash = lnInvoice.getString("paymentHash")!!
|
|
||||||
val description = if (hasNonNullKey(lnInvoice, "description")) lnInvoice.getString("description") else null
|
|
||||||
val descriptionHash = if (hasNonNullKey(lnInvoice, "descriptionHash")) lnInvoice.getString("descriptionHash") else null
|
|
||||||
val amountMsat = if (hasNonNullKey(lnInvoice, "amountMsat")) lnInvoice.getDouble("amountMsat").toULong() else null
|
|
||||||
val timestamp = lnInvoice.getDouble("timestamp").toULong()
|
|
||||||
val expiry = lnInvoice.getDouble("expiry").toULong()
|
|
||||||
val routingHints = lnInvoice.getArray("routingHints")?.let { asRouteHintList(it) }!!
|
|
||||||
val paymentSecret = lnInvoice.getArray("paymentSecret")?.let { asUByteList(it) }!!
|
|
||||||
val minFinalCltvExpiryDelta = lnInvoice.getDouble("minFinalCltvExpiryDelta").toULong()
|
|
||||||
return LnInvoice(
|
|
||||||
bolt11,
|
|
||||||
network,
|
|
||||||
payeePubkey,
|
|
||||||
paymentHash,
|
|
||||||
description,
|
|
||||||
descriptionHash,
|
|
||||||
amountMsat,
|
|
||||||
timestamp,
|
|
||||||
expiry,
|
|
||||||
routingHints,
|
|
||||||
paymentSecret,
|
|
||||||
minFinalCltvExpiryDelta,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(lnInvoice: LnInvoice): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"bolt11" to lnInvoice.bolt11,
|
|
||||||
"network" to lnInvoice.network.name.lowercase(),
|
|
||||||
"payeePubkey" to lnInvoice.payeePubkey,
|
|
||||||
"paymentHash" to lnInvoice.paymentHash,
|
|
||||||
"description" to lnInvoice.description,
|
|
||||||
"descriptionHash" to lnInvoice.descriptionHash,
|
|
||||||
"amountMsat" to lnInvoice.amountMsat,
|
|
||||||
"timestamp" to lnInvoice.timestamp,
|
|
||||||
"expiry" to lnInvoice.expiry,
|
|
||||||
"routingHints" to readableArrayOf(lnInvoice.routingHints),
|
|
||||||
"paymentSecret" to readableArrayOf(lnInvoice.paymentSecret),
|
|
||||||
"minFinalCltvExpiryDelta" to lnInvoice.minFinalCltvExpiryDelta,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asLnInvoiceList(arr: ReadableArray): List<LnInvoice> {
|
|
||||||
val list = ArrayList<LnInvoice>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asLnInvoice(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asLogEntry(logEntry: ReadableMap): LogEntry? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
logEntry,
|
|
||||||
arrayOf(
|
|
||||||
"line",
|
|
||||||
"level",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val line = logEntry.getString("line")!!
|
|
||||||
val level = logEntry.getString("level")!!
|
|
||||||
return LogEntry(
|
|
||||||
line,
|
|
||||||
level,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(logEntry: LogEntry): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"line" to logEntry.line,
|
|
||||||
"level" to logEntry.level,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asLogEntryList(arr: ReadableArray): List<LogEntry> {
|
|
||||||
val list = ArrayList<LogEntry>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asLogEntry(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPayment(payment: ReadableMap): Payment? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
payment,
|
|
||||||
arrayOf(
|
|
||||||
"txId",
|
|
||||||
"timestamp",
|
|
||||||
"amountSat",
|
|
||||||
"paymentType",
|
|
||||||
"status",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val txId = payment.getString("txId")!!
|
|
||||||
val swapId = if (hasNonNullKey(payment, "swapId")) payment.getString("swapId") else null
|
|
||||||
val timestamp = payment.getInt("timestamp").toUInt()
|
|
||||||
val amountSat = payment.getDouble("amountSat").toULong()
|
|
||||||
val feesSat = if (hasNonNullKey(payment, "feesSat")) payment.getDouble("feesSat").toULong() else null
|
|
||||||
val preimage = if (hasNonNullKey(payment, "preimage")) payment.getString("preimage") else null
|
|
||||||
val refundTxId = if (hasNonNullKey(payment, "refundTxId")) payment.getString("refundTxId") else null
|
|
||||||
val refundTxAmountSat = if (hasNonNullKey(payment, "refundTxAmountSat")) payment.getDouble("refundTxAmountSat").toULong() else null
|
|
||||||
val paymentType = payment.getString("paymentType")?.let { asPaymentType(it) }!!
|
|
||||||
val status = payment.getString("status")?.let { asPaymentState(it) }!!
|
|
||||||
return Payment(
|
|
||||||
txId,
|
|
||||||
swapId,
|
|
||||||
timestamp,
|
|
||||||
amountSat,
|
|
||||||
feesSat,
|
|
||||||
preimage,
|
|
||||||
refundTxId,
|
|
||||||
refundTxAmountSat,
|
|
||||||
paymentType,
|
|
||||||
status,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(payment: Payment): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"txId" to payment.txId,
|
|
||||||
"swapId" to payment.swapId,
|
|
||||||
"timestamp" to payment.timestamp,
|
|
||||||
"amountSat" to payment.amountSat,
|
|
||||||
"feesSat" to payment.feesSat,
|
|
||||||
"preimage" to payment.preimage,
|
|
||||||
"refundTxId" to payment.refundTxId,
|
|
||||||
"refundTxAmountSat" to payment.refundTxAmountSat,
|
|
||||||
"paymentType" to payment.paymentType.name.lowercase(),
|
|
||||||
"status" to payment.status.name.lowercase(),
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asPaymentList(arr: ReadableArray): List<Payment> {
|
|
||||||
val list = ArrayList<Payment>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asPayment(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPrepareReceiveRequest(prepareReceiveRequest: ReadableMap): PrepareReceiveRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
prepareReceiveRequest,
|
|
||||||
arrayOf(
|
|
||||||
"payerAmountSat",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val payerAmountSat = prepareReceiveRequest.getDouble("payerAmountSat").toULong()
|
|
||||||
return PrepareReceiveRequest(
|
|
||||||
payerAmountSat,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(prepareReceiveRequest: PrepareReceiveRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"payerAmountSat" to prepareReceiveRequest.payerAmountSat,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asPrepareReceiveRequestList(arr: ReadableArray): List<PrepareReceiveRequest> {
|
|
||||||
val list = ArrayList<PrepareReceiveRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asPrepareReceiveRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPrepareReceiveResponse(prepareReceiveResponse: ReadableMap): PrepareReceiveResponse? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
prepareReceiveResponse,
|
|
||||||
arrayOf(
|
|
||||||
"payerAmountSat",
|
|
||||||
"feesSat",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val payerAmountSat = prepareReceiveResponse.getDouble("payerAmountSat").toULong()
|
|
||||||
val feesSat = prepareReceiveResponse.getDouble("feesSat").toULong()
|
|
||||||
return PrepareReceiveResponse(
|
|
||||||
payerAmountSat,
|
|
||||||
feesSat,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(prepareReceiveResponse: PrepareReceiveResponse): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"payerAmountSat" to prepareReceiveResponse.payerAmountSat,
|
|
||||||
"feesSat" to prepareReceiveResponse.feesSat,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asPrepareReceiveResponseList(arr: ReadableArray): List<PrepareReceiveResponse> {
|
|
||||||
val list = ArrayList<PrepareReceiveResponse>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asPrepareReceiveResponse(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPrepareSendRequest(prepareSendRequest: ReadableMap): PrepareSendRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
prepareSendRequest,
|
|
||||||
arrayOf(
|
|
||||||
"invoice",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val invoice = prepareSendRequest.getString("invoice")!!
|
|
||||||
return PrepareSendRequest(
|
|
||||||
invoice,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(prepareSendRequest: PrepareSendRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"invoice" to prepareSendRequest.invoice,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asPrepareSendRequestList(arr: ReadableArray): List<PrepareSendRequest> {
|
|
||||||
val list = ArrayList<PrepareSendRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asPrepareSendRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPrepareSendResponse(prepareSendResponse: ReadableMap): PrepareSendResponse? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
prepareSendResponse,
|
|
||||||
arrayOf(
|
|
||||||
"invoice",
|
|
||||||
"feesSat",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val invoice = prepareSendResponse.getString("invoice")!!
|
|
||||||
val feesSat = prepareSendResponse.getDouble("feesSat").toULong()
|
|
||||||
return PrepareSendResponse(
|
|
||||||
invoice,
|
|
||||||
feesSat,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(prepareSendResponse: PrepareSendResponse): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"invoice" to prepareSendResponse.invoice,
|
|
||||||
"feesSat" to prepareSendResponse.feesSat,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asPrepareSendResponseList(arr: ReadableArray): List<PrepareSendResponse> {
|
|
||||||
val list = ArrayList<PrepareSendResponse>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asPrepareSendResponse(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asReceivePaymentResponse(receivePaymentResponse: ReadableMap): ReceivePaymentResponse? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
receivePaymentResponse,
|
|
||||||
arrayOf(
|
|
||||||
"id",
|
|
||||||
"invoice",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val id = receivePaymentResponse.getString("id")!!
|
|
||||||
val invoice = receivePaymentResponse.getString("invoice")!!
|
|
||||||
return ReceivePaymentResponse(
|
|
||||||
id,
|
|
||||||
invoice,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(receivePaymentResponse: ReceivePaymentResponse): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"id" to receivePaymentResponse.id,
|
|
||||||
"invoice" to receivePaymentResponse.invoice,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asReceivePaymentResponseList(arr: ReadableArray): List<ReceivePaymentResponse> {
|
|
||||||
val list = ArrayList<ReceivePaymentResponse>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asReceivePaymentResponse(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asRestoreRequest(restoreRequest: ReadableMap): RestoreRequest? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
restoreRequest,
|
|
||||||
arrayOf(),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val backupPath = if (hasNonNullKey(restoreRequest, "backupPath")) restoreRequest.getString("backupPath") else null
|
|
||||||
return RestoreRequest(
|
|
||||||
backupPath,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(restoreRequest: RestoreRequest): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"backupPath" to restoreRequest.backupPath,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asRestoreRequestList(arr: ReadableArray): List<RestoreRequest> {
|
|
||||||
val list = ArrayList<RestoreRequest>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asRestoreRequest(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asRouteHint(routeHint: ReadableMap): RouteHint? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
routeHint,
|
|
||||||
arrayOf(
|
|
||||||
"hops",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val hops = routeHint.getArray("hops")?.let { asRouteHintHopList(it) }!!
|
|
||||||
return RouteHint(
|
|
||||||
hops,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(routeHint: RouteHint): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"hops" to readableArrayOf(routeHint.hops),
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asRouteHintList(arr: ReadableArray): List<RouteHint> {
|
|
||||||
val list = ArrayList<RouteHint>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asRouteHint(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asRouteHintHop(routeHintHop: ReadableMap): RouteHintHop? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
routeHintHop,
|
|
||||||
arrayOf(
|
|
||||||
"srcNodeId",
|
|
||||||
"shortChannelId",
|
|
||||||
"feesBaseMsat",
|
|
||||||
"feesProportionalMillionths",
|
|
||||||
"cltvExpiryDelta",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val srcNodeId = routeHintHop.getString("srcNodeId")!!
|
|
||||||
val shortChannelId = routeHintHop.getDouble("shortChannelId").toULong()
|
|
||||||
val feesBaseMsat = routeHintHop.getInt("feesBaseMsat").toUInt()
|
|
||||||
val feesProportionalMillionths = routeHintHop.getInt("feesProportionalMillionths").toUInt()
|
|
||||||
val cltvExpiryDelta = routeHintHop.getDouble("cltvExpiryDelta").toULong()
|
|
||||||
val htlcMinimumMsat = if (hasNonNullKey(routeHintHop, "htlcMinimumMsat")) routeHintHop.getDouble("htlcMinimumMsat").toULong() else null
|
|
||||||
val htlcMaximumMsat = if (hasNonNullKey(routeHintHop, "htlcMaximumMsat")) routeHintHop.getDouble("htlcMaximumMsat").toULong() else null
|
|
||||||
return RouteHintHop(
|
|
||||||
srcNodeId,
|
|
||||||
shortChannelId,
|
|
||||||
feesBaseMsat,
|
|
||||||
feesProportionalMillionths,
|
|
||||||
cltvExpiryDelta,
|
|
||||||
htlcMinimumMsat,
|
|
||||||
htlcMaximumMsat,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(routeHintHop: RouteHintHop): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"srcNodeId" to routeHintHop.srcNodeId,
|
|
||||||
"shortChannelId" to routeHintHop.shortChannelId,
|
|
||||||
"feesBaseMsat" to routeHintHop.feesBaseMsat,
|
|
||||||
"feesProportionalMillionths" to routeHintHop.feesProportionalMillionths,
|
|
||||||
"cltvExpiryDelta" to routeHintHop.cltvExpiryDelta,
|
|
||||||
"htlcMinimumMsat" to routeHintHop.htlcMinimumMsat,
|
|
||||||
"htlcMaximumMsat" to routeHintHop.htlcMaximumMsat,
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asRouteHintHopList(arr: ReadableArray): List<RouteHintHop> {
|
|
||||||
val list = ArrayList<RouteHintHop>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asRouteHintHop(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asSendPaymentResponse(sendPaymentResponse: ReadableMap): SendPaymentResponse? {
|
|
||||||
if (!validateMandatoryFields(
|
|
||||||
sendPaymentResponse,
|
|
||||||
arrayOf(
|
|
||||||
"payment",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
val payment = sendPaymentResponse.getMap("payment")?.let { asPayment(it) }!!
|
|
||||||
return SendPaymentResponse(
|
|
||||||
payment,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(sendPaymentResponse: SendPaymentResponse): ReadableMap =
|
|
||||||
readableMapOf(
|
|
||||||
"payment" to readableMapOf(sendPaymentResponse.payment),
|
|
||||||
)
|
|
||||||
|
|
||||||
fun asSendPaymentResponseList(arr: ReadableArray): List<SendPaymentResponse> {
|
|
||||||
val list = ArrayList<SendPaymentResponse>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asSendPaymentResponse(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asLiquidSdkEvent(liquidSdkEvent: ReadableMap): LiquidSdkEvent? {
|
|
||||||
val type = liquidSdkEvent.getString("type")
|
|
||||||
|
|
||||||
if (type == "paymentFailed") {
|
|
||||||
return LiquidSdkEvent.PaymentFailed(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "paymentPending") {
|
|
||||||
return LiquidSdkEvent.PaymentPending(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "paymentRefunded") {
|
|
||||||
return LiquidSdkEvent.PaymentRefunded(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "paymentRefundPending") {
|
|
||||||
return LiquidSdkEvent.PaymentRefundPending(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "paymentSucceed") {
|
|
||||||
return LiquidSdkEvent.PaymentSucceed(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "paymentWaitingConfirmation") {
|
|
||||||
return LiquidSdkEvent.PaymentWaitingConfirmation(liquidSdkEvent.getMap("details")?.let { asPayment(it) }!!)
|
|
||||||
}
|
|
||||||
if (type == "synced") {
|
|
||||||
return LiquidSdkEvent.Synced
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(liquidSdkEvent: LiquidSdkEvent): ReadableMap? {
|
|
||||||
val map = Arguments.createMap()
|
|
||||||
when (liquidSdkEvent) {
|
|
||||||
is LiquidSdkEvent.PaymentFailed -> {
|
|
||||||
pushToMap(map, "type", "paymentFailed")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.PaymentPending -> {
|
|
||||||
pushToMap(map, "type", "paymentPending")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.PaymentRefunded -> {
|
|
||||||
pushToMap(map, "type", "paymentRefunded")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.PaymentRefundPending -> {
|
|
||||||
pushToMap(map, "type", "paymentRefundPending")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.PaymentSucceed -> {
|
|
||||||
pushToMap(map, "type", "paymentSucceed")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.PaymentWaitingConfirmation -> {
|
|
||||||
pushToMap(map, "type", "paymentWaitingConfirmation")
|
|
||||||
pushToMap(map, "details", readableMapOf(liquidSdkEvent.details))
|
|
||||||
}
|
|
||||||
is LiquidSdkEvent.Synced -> {
|
|
||||||
pushToMap(map, "type", "synced")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return map
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asLiquidSdkEventList(arr: ReadableArray): List<LiquidSdkEvent> {
|
|
||||||
val list = ArrayList<LiquidSdkEvent>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is ReadableMap -> list.add(asLiquidSdkEvent(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asNetwork(type: String): Network = Network.valueOf(camelToUpperSnakeCase(type))
|
|
||||||
|
|
||||||
fun asNetworkList(arr: ReadableArray): List<Network> {
|
|
||||||
val list = ArrayList<Network>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is String -> list.add(asNetwork(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPaymentState(type: String): PaymentState = PaymentState.valueOf(camelToUpperSnakeCase(type))
|
|
||||||
|
|
||||||
fun asPaymentStateList(arr: ReadableArray): List<PaymentState> {
|
|
||||||
val list = ArrayList<PaymentState>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is String -> list.add(asPaymentState(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asPaymentType(type: String): PaymentType = PaymentType.valueOf(camelToUpperSnakeCase(type))
|
|
||||||
|
|
||||||
fun asPaymentTypeList(arr: ReadableArray): List<PaymentType> {
|
|
||||||
val list = ArrayList<PaymentType>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is String -> list.add(asPaymentType(value)!!)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableMapOf(vararg values: Pair<String, *>): ReadableMap {
|
|
||||||
val map = Arguments.createMap()
|
|
||||||
for ((key, value) in values) {
|
|
||||||
pushToMap(map, key, value)
|
|
||||||
}
|
|
||||||
return map
|
|
||||||
}
|
|
||||||
|
|
||||||
fun hasNonNullKey(
|
|
||||||
map: ReadableMap,
|
|
||||||
key: String,
|
|
||||||
): Boolean = map.hasKey(key) && !map.isNull(key)
|
|
||||||
|
|
||||||
fun validateMandatoryFields(
|
|
||||||
map: ReadableMap,
|
|
||||||
keys: Array<String>,
|
|
||||||
): Boolean {
|
|
||||||
for (k in keys) {
|
|
||||||
if (!hasNonNullKey(map, k)) return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
fun pushToArray(
|
|
||||||
array: WritableArray,
|
|
||||||
value: Any?,
|
|
||||||
) {
|
|
||||||
when (value) {
|
|
||||||
null -> array.pushNull()
|
|
||||||
is Payment -> array.pushMap(readableMapOf(value))
|
|
||||||
is RouteHint -> array.pushMap(readableMapOf(value))
|
|
||||||
is RouteHintHop -> array.pushMap(readableMapOf(value))
|
|
||||||
is UByte -> array.pushInt(value.toInt())
|
|
||||||
is Array<*> -> array.pushArray(readableArrayOf(value.asIterable()))
|
|
||||||
is List<*> -> array.pushArray(readableArrayOf(value))
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun pushToMap(
|
|
||||||
map: WritableMap,
|
|
||||||
key: String,
|
|
||||||
value: Any?,
|
|
||||||
) {
|
|
||||||
when (value) {
|
|
||||||
null -> map.putNull(key)
|
|
||||||
is Boolean -> map.putBoolean(key, value)
|
|
||||||
is Byte -> map.putInt(key, value.toInt())
|
|
||||||
is Double -> map.putDouble(key, value)
|
|
||||||
is Int -> map.putInt(key, value)
|
|
||||||
is Long -> map.putDouble(key, value.toDouble())
|
|
||||||
is ReadableArray -> map.putArray(key, value)
|
|
||||||
is ReadableMap -> map.putMap(key, value)
|
|
||||||
is String -> map.putString(key, value)
|
|
||||||
is UByte -> map.putInt(key, value.toInt())
|
|
||||||
is UInt -> map.putInt(key, value.toInt())
|
|
||||||
is UShort -> map.putInt(key, value.toInt())
|
|
||||||
is ULong -> map.putDouble(key, value.toDouble())
|
|
||||||
is Array<*> -> map.putArray(key, readableArrayOf(value.asIterable()))
|
|
||||||
is List<*> -> map.putArray(key, readableArrayOf(value))
|
|
||||||
else -> throw LiquidSdkException.Generic("Unexpected type ${value::class.java.name} for key [$key]")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readableArrayOf(values: Iterable<*>?): ReadableArray {
|
|
||||||
val array = Arguments.createArray()
|
|
||||||
if (values != null) {
|
|
||||||
for (value in values) {
|
|
||||||
pushToArray(array, value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return array
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asUByteList(arr: ReadableArray): List<UByte> {
|
|
||||||
val list = ArrayList<UByte>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
when (value) {
|
|
||||||
is Double -> list.add(value.toInt().toUByte())
|
|
||||||
is Int -> list.add(value.toUByte())
|
|
||||||
is UByte -> list.add(value)
|
|
||||||
else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun asStringList(arr: ReadableArray): List<String> {
|
|
||||||
val list = ArrayList<String>()
|
|
||||||
for (value in arr.toArrayList()) {
|
|
||||||
list.add(value.toString())
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun errMissingMandatoryField(
|
|
||||||
fieldName: String,
|
|
||||||
typeName: String,
|
|
||||||
): String = "Missing mandatory field $fieldName for type $typeName"
|
|
||||||
|
|
||||||
fun errUnexpectedType(typeName: String): String = "Unexpected type $typeName"
|
|
||||||
|
|
||||||
fun errUnexpectedValue(fieldName: String): String = "Unexpected value for optional field $fieldName"
|
|
||||||
|
|
||||||
fun camelToUpperSnakeCase(str: String): String {
|
|
||||||
val pattern = "(?<=.)[A-Z]".toRegex()
|
|
||||||
return str.replace(pattern, "_$0").uppercase()
|
|
||||||
}
|
|
||||||
@@ -1,321 +0,0 @@
|
|||||||
package com.breezliquidsdk
|
|
||||||
|
|
||||||
import breez_liquid_sdk.*
|
|
||||||
import com.facebook.react.bridge.*
|
|
||||||
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
||||||
import java.io.File
|
|
||||||
import java.util.*
|
|
||||||
import java.util.concurrent.ExecutorService
|
|
||||||
import java.util.concurrent.Executors
|
|
||||||
|
|
||||||
class BreezLiquidSDKModule(
|
|
||||||
reactContext: ReactApplicationContext,
|
|
||||||
) : ReactContextBaseJavaModule(reactContext) {
|
|
||||||
private lateinit var executor: ExecutorService
|
|
||||||
private var bindingLiquidSdk: BindingLiquidSdk? = null
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val TAG = "RNBreezLiquidSDK"
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun initialize() {
|
|
||||||
super.initialize()
|
|
||||||
|
|
||||||
executor = Executors.newFixedThreadPool(3)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getName(): String = TAG
|
|
||||||
|
|
||||||
@Throws(LiquidSdkException::class)
|
|
||||||
fun getBindingLiquidSdk(): BindingLiquidSdk {
|
|
||||||
if (bindingLiquidSdk != null) {
|
|
||||||
return bindingLiquidSdk!!
|
|
||||||
}
|
|
||||||
|
|
||||||
throw LiquidSdkException.Generic("Not initialized")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Throws(LiquidSdkException::class)
|
|
||||||
private fun ensureWorkingDir(workingDir: String) {
|
|
||||||
try {
|
|
||||||
val workingDirFile = File(workingDir)
|
|
||||||
|
|
||||||
if (!workingDirFile.exists() && !workingDirFile.mkdirs()) {
|
|
||||||
throw LiquidSdkException.Generic("Mandatory field workingDir must contain a writable directory")
|
|
||||||
}
|
|
||||||
} catch (e: SecurityException) {
|
|
||||||
throw LiquidSdkException.Generic("Mandatory field workingDir must contain a writable directory")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun addListener(eventName: String) {}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun removeListeners(count: Int) {}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun defaultConfig(
|
|
||||||
network: String,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val networkTmp = asNetwork(network)
|
|
||||||
val res = defaultConfig(networkTmp)
|
|
||||||
val workingDir = File(reactApplicationContext.filesDir.toString() + "/breezLiquidSdk")
|
|
||||||
|
|
||||||
res.workingDir = workingDir.absolutePath
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun parseInvoice(
|
|
||||||
invoice: String,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val res = parseInvoice(invoice)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun setLogger(promise: Promise) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val emitter = reactApplicationContext.getJSModule(RCTDeviceEventEmitter::class.java)
|
|
||||||
|
|
||||||
setLogger(BreezLiquidSDKLogger(emitter))
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun connect(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
if (bindingLiquidSdk != null) {
|
|
||||||
promise.reject("Generic", "Already initialized")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
var connectRequest =
|
|
||||||
asConnectRequest(req) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "ConnectRequest")) }
|
|
||||||
|
|
||||||
ensureWorkingDir(connectRequest.config.workingDir)
|
|
||||||
|
|
||||||
bindingLiquidSdk = connect(connectRequest)
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun addEventListener(promise: Promise) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val emitter = reactApplicationContext.getJSModule(RCTDeviceEventEmitter::class.java)
|
|
||||||
var eventListener = BreezLiquidSDKEventListener(emitter)
|
|
||||||
val res = getBindingLiquidSdk().addEventListener(eventListener)
|
|
||||||
|
|
||||||
eventListener.setId(res)
|
|
||||||
promise.resolve(res)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun removeEventListener(
|
|
||||||
id: String,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
getBindingLiquidSdk().removeEventListener(id)
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun getInfo(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val getInfoRequest =
|
|
||||||
asGetInfoRequest(req) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "GetInfoRequest")) }
|
|
||||||
val res = getBindingLiquidSdk().getInfo(getInfoRequest)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun prepareSendPayment(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val prepareSendRequest =
|
|
||||||
asPrepareSendRequest(req)
|
|
||||||
?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareSendRequest")) }
|
|
||||||
val res = getBindingLiquidSdk().prepareSendPayment(prepareSendRequest)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun sendPayment(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val prepareSendResponse =
|
|
||||||
asPrepareSendResponse(req)
|
|
||||||
?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareSendResponse")) }
|
|
||||||
val res = getBindingLiquidSdk().sendPayment(prepareSendResponse)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun prepareReceivePayment(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val prepareReceiveRequest =
|
|
||||||
asPrepareReceiveRequest(req)
|
|
||||||
?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveRequest")) }
|
|
||||||
val res = getBindingLiquidSdk().prepareReceivePayment(prepareReceiveRequest)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun receivePayment(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val prepareReceiveResponse =
|
|
||||||
asPrepareReceiveResponse(req)
|
|
||||||
?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveResponse")) }
|
|
||||||
val res = getBindingLiquidSdk().receivePayment(prepareReceiveResponse)
|
|
||||||
promise.resolve(readableMapOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun listPayments(promise: Promise) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val res = getBindingLiquidSdk().listPayments()
|
|
||||||
promise.resolve(readableArrayOf(res))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun sync(promise: Promise) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
getBindingLiquidSdk().sync()
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun backup(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val backupRequest =
|
|
||||||
asBackupRequest(req) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "BackupRequest")) }
|
|
||||||
getBindingLiquidSdk().backup(backupRequest)
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun restore(
|
|
||||||
req: ReadableMap,
|
|
||||||
promise: Promise,
|
|
||||||
) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
val restoreRequest =
|
|
||||||
asRestoreRequest(req) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "RestoreRequest")) }
|
|
||||||
getBindingLiquidSdk().restore(restoreRequest)
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactMethod
|
|
||||||
fun disconnect(promise: Promise) {
|
|
||||||
executor.execute {
|
|
||||||
try {
|
|
||||||
getBindingLiquidSdk().disconnect()
|
|
||||||
bindingLiquidSdk = null
|
|
||||||
promise.resolve(readableMapOf("status" to "ok"))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,97 +0,0 @@
|
|||||||
#import <React/RCTBridgeModule.h>
|
|
||||||
#import <React/RCTEventEmitter.h>
|
|
||||||
|
|
||||||
@interface RCT_EXTERN_MODULE(RNBreezLiquidSDK, RCTEventEmitter)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
defaultConfig: (NSString*)network
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
parseInvoice: (NSString*)invoice
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
setLogger: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
connect: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
addEventListener: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
removeEventListener: (NSString*)id
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
getInfo: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
prepareSendPayment: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
sendPayment: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
prepareReceivePayment: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
receivePayment: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
listPayments: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
sync: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
backup: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
restore: (NSDictionary*)req
|
|
||||||
resolve: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
RCT_EXTERN_METHOD(
|
|
||||||
disconnect: (RCTPromiseResolveBlock)resolve
|
|
||||||
reject: (RCTPromiseRejectBlock)reject
|
|
||||||
)
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,266 +0,0 @@
|
|||||||
import BreezLiquidSDK
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
@objc(RNBreezLiquidSDK)
|
|
||||||
class RNBreezLiquidSDK: RCTEventEmitter {
|
|
||||||
static let TAG: String = "BreezLiquidSDK"
|
|
||||||
|
|
||||||
public static var emitter: RCTEventEmitter!
|
|
||||||
public static var hasListeners: Bool = false
|
|
||||||
public static var supportedEvents: [String] = ["breezLiquidSdkLog"]
|
|
||||||
|
|
||||||
private var bindingLiquidSdk: BindingLiquidSdk!
|
|
||||||
|
|
||||||
static var breezLiquidSdkDirectory: URL {
|
|
||||||
let applicationDirectory = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
|
|
||||||
let breezLiquidSdkDirectory = applicationDirectory.appendingPathComponent("breezLiquidSdk", isDirectory: true)
|
|
||||||
|
|
||||||
if !FileManager.default.fileExists(atPath: breezLiquidSdkDirectory.path) {
|
|
||||||
try! FileManager.default.createDirectory(atPath: breezLiquidSdkDirectory.path, withIntermediateDirectories: true)
|
|
||||||
}
|
|
||||||
|
|
||||||
return breezLiquidSdkDirectory
|
|
||||||
}
|
|
||||||
|
|
||||||
override init() {
|
|
||||||
super.init()
|
|
||||||
RNBreezLiquidSDK.emitter = self
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
override static func moduleName() -> String! {
|
|
||||||
TAG
|
|
||||||
}
|
|
||||||
|
|
||||||
static func addSupportedEvent(name: String) {
|
|
||||||
RNBreezLiquidSDK.supportedEvents.append(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
override func supportedEvents() -> [String]! {
|
|
||||||
return RNBreezLiquidSDK.supportedEvents
|
|
||||||
}
|
|
||||||
|
|
||||||
override func startObserving() {
|
|
||||||
RNBreezLiquidSDK.hasListeners = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override func stopObserving() {
|
|
||||||
RNBreezLiquidSDK.hasListeners = false
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
override static func requiresMainQueueSetup() -> Bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func getBindingLiquidSdk() throws -> BindingLiquidSdk {
|
|
||||||
if bindingLiquidSdk != nil {
|
|
||||||
return bindingLiquidSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
throw LiquidSdkError.Generic(message: "Not initialized")
|
|
||||||
}
|
|
||||||
|
|
||||||
private func ensureWorkingDir(workingDir: String) throws {
|
|
||||||
do {
|
|
||||||
if !FileManager.default.fileExists(atPath: workingDir) {
|
|
||||||
try FileManager.default.createDirectory(atPath: workingDir, withIntermediateDirectories: true)
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
throw LiquidSdkError.Generic(message: "Mandatory field workingDir must contain a writable directory")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(defaultConfig:resolve:reject:)
|
|
||||||
func defaultConfig(_ network: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let networkTmp = try BreezLiquidSDKMapper.asNetwork(network: network)
|
|
||||||
var res = BreezLiquidSDK.defaultConfig(network: networkTmp)
|
|
||||||
res.workingDir = RNBreezLiquidSDK.breezLiquidSdkDirectory.path
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(config: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(parseInvoice:resolve:reject:)
|
|
||||||
func parseInvoice(_ invoice: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
var res = try BreezLiquidSDK.parseInvoice(invoice: invoice)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(lnInvoice: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(setLogger:reject:)
|
|
||||||
func setLogger(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
try BreezLiquidSDK.setLogger(Logger: BreezLiquidSDKLogger())
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(connect:resolve:reject:)
|
|
||||||
func connect(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
if bindingLiquidSdk != nil {
|
|
||||||
reject("Generic", "Already initialized", nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
var connectRequest = try BreezLiquidSDKMapper.asConnectRequest(connectRequest: req)
|
|
||||||
try ensureWorkingDir(workingDir: connectRequest.config.workingDir)
|
|
||||||
|
|
||||||
bindingLiquidSdk = try BreezLiquidSDK.connect(req: connectRequest)
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(addEventListener:reject:)
|
|
||||||
func addEventListener(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
var eventListener = BreezLiquidSDKEventListener()
|
|
||||||
var res = try getBindingLiquidSdk().addEventListener(listener: eventListener)
|
|
||||||
|
|
||||||
eventListener.setId(id: res)
|
|
||||||
resolve(res)
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(removeEventListener:resolve:reject:)
|
|
||||||
func removeEventListener(_ id: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
try getBindingLiquidSdk().removeEventListener(id: id)
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(getInfo:resolve:reject:)
|
|
||||||
func getInfo(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let getInfoRequest = try BreezLiquidSDKMapper.asGetInfoRequest(getInfoRequest: req)
|
|
||||||
var res = try getBindingLiquidSdk().getInfo(req: getInfoRequest)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(getInfoResponse: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(prepareSendPayment:resolve:reject:)
|
|
||||||
func prepareSendPayment(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let prepareSendRequest = try BreezLiquidSDKMapper.asPrepareSendRequest(prepareSendRequest: req)
|
|
||||||
var res = try getBindingLiquidSdk().prepareSendPayment(req: prepareSendRequest)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(prepareSendResponse: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(sendPayment:resolve:reject:)
|
|
||||||
func sendPayment(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let prepareSendResponse = try BreezLiquidSDKMapper.asPrepareSendResponse(prepareSendResponse: req)
|
|
||||||
var res = try getBindingLiquidSdk().sendPayment(req: prepareSendResponse)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(sendPaymentResponse: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(prepareReceivePayment:resolve:reject:)
|
|
||||||
func prepareReceivePayment(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let prepareReceiveRequest = try BreezLiquidSDKMapper.asPrepareReceiveRequest(prepareReceiveRequest: req)
|
|
||||||
var res = try getBindingLiquidSdk().prepareReceivePayment(req: prepareReceiveRequest)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(prepareReceiveResponse: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(receivePayment:resolve:reject:)
|
|
||||||
func receivePayment(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let prepareReceiveResponse = try BreezLiquidSDKMapper.asPrepareReceiveResponse(prepareReceiveResponse: req)
|
|
||||||
var res = try getBindingLiquidSdk().receivePayment(req: prepareReceiveResponse)
|
|
||||||
resolve(BreezLiquidSDKMapper.dictionaryOf(receivePaymentResponse: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(listPayments:reject:)
|
|
||||||
func listPayments(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
var res = try getBindingLiquidSdk().listPayments()
|
|
||||||
resolve(BreezLiquidSDKMapper.arrayOf(paymentList: res))
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(sync:reject:)
|
|
||||||
func sync(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
try getBindingLiquidSdk().sync()
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(backup:resolve:reject:)
|
|
||||||
func backup(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let backupRequest = try BreezLiquidSDKMapper.asBackupRequest(backupRequest: req)
|
|
||||||
try getBindingLiquidSdk().backup(req: backupRequest)
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(restore:resolve:reject:)
|
|
||||||
func restore(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
let restoreRequest = try BreezLiquidSDKMapper.asRestoreRequest(restoreRequest: req)
|
|
||||||
try getBindingLiquidSdk().restore(req: restoreRequest)
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(disconnect:reject:)
|
|
||||||
func disconnect(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
do {
|
|
||||||
try getBindingLiquidSdk().disconnect()
|
|
||||||
bindingLiquidSdk = nil
|
|
||||||
resolve(["status": "ok"])
|
|
||||||
} catch let err {
|
|
||||||
rejectErr(err: err, reject: reject)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func rejectErr(err: Error, reject: @escaping RCTPromiseRejectBlock) {
|
|
||||||
var errorName = "Generic"
|
|
||||||
var message = "\(err)"
|
|
||||||
if let errAssociated = Mirror(reflecting: err).children.first {
|
|
||||||
errorName = errAssociated.label ?? errorName
|
|
||||||
if let associatedMessage = Mirror(reflecting: errAssociated.value).children.first {
|
|
||||||
message = associatedMessage.value as! String
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reject(errorName, message, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user