Skip to content

Commit

Permalink
Add React Native snippets
Browse files Browse the repository at this point in the history
  • Loading branch information
dangeross committed Oct 24, 2023
1 parent cd3e85d commit 07b5577
Show file tree
Hide file tree
Showing 32 changed files with 4,227 additions and 199 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ book
.idea

# Sub-projects with code snippets
snippets/react-native/node_modules
snippets/rust/target
8 changes: 8 additions & 0 deletions snippets/react-native/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"endOfLine": "lf",
"printWidth": 80,
"semi": false,
"singleQuote": false,
"tabWidth": 4,
"trailingComma": "none"
}
12 changes: 12 additions & 0 deletions snippets/react-native/buy_btc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {
buyBitcoin,
BuyBitcoinProvider
} from "@breeztech/react-native-breez-sdk"

const exampleBuyBtc = async () => {
// ANCHOR: buy-btc
const buyBitcoinResponse = await buyBitcoin({
provider: BuyBitcoinProvider.MOONPAY
})
// ANCHOR_END: buy-btc
}
15 changes: 15 additions & 0 deletions snippets/react-native/connecting_lsp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { connectLsp, lspId, lspInfo } from "@breeztech/react-native-breez-sdk"

const exampleAutoConnect = async () => {
// ANCHOR: get-lsp-info
const id = await lspId()
const info = await lspInfo()
// ANCHOR_END: get-lsp-info
}

const exampleManualConnect = async () => {
// ANCHOR: connect-lsp
const id = "your selected lsp id"
await connectLsp(id)
// ANCHOR_END: connect-lsp
}
22 changes: 22 additions & 0 deletions snippets/react-native/fiat_currencies.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import {
listFiatCurrencies,
fetchFiatRates
} from "@breeztech/react-native-breez-sdk"

const exampleListCurrencies = async () => {
// ANCHOR: list-fiat-currencies
const fiatCurrencies = await listFiatCurrencies()
// ANCHOR_END: list-fiat-currencies
}

const exampleFetchRates = async () => {
// ANCHOR: fetch-fiat-rates
const fiatRates = await fetchFiatRates()
// ANCHOR_END: fetch-fiat-rates
}

const exampleListCurrenciesAndRates = async () => {
// ANCHOR: get-fiat-currencies-and-rates
// TODO
// ANCHOR_END: get-fiat-currencies-and-rates
}
47 changes: 47 additions & 0 deletions snippets/react-native/getting_started.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {
BreezEvent,
connect,
defaultConfig,
EnvironmentType,
mnemonicToSeed,
NodeConfig,
NodeConfigVariant,
nodeInfo
} from "@breeztech/react-native-breez-sdk"

const exampleGettingStarted = async () => {
// ANCHOR: init-sdk
// SDK events listener
const onBreezEvent = (e: BreezEvent) => {
console.log(`Received event ${e.type}`)
}

// Create the default config
const seed = await mnemonicToSeed("<mnemonics words>")
const inviteCode = "<invite code>"
const apiKey = "<api key>"
const nodeConfig: NodeConfig = {
type: NodeConfigVariant.GREENLIGHT,
config: {
inviteCode
}
}

const config = await defaultConfig(
EnvironmentType.PRODUCTION,
apiKey,
nodeConfig
)

// Connect to the Breez SDK make it ready for use
await connect(config, seed, onBreezEvent)
// ANCHOR_END: init-sdk
}

const exampleFetchNodeInfo = async () => {
// ANCHOR: fetch-balance
const nodeState = await nodeInfo()
const balanceLn = nodeState.channelsBalanceMsat
const balanceOnchain = nodeState.onchainBalanceMsat
// ANCHOR_END: fetch-balance
}
20 changes: 20 additions & 0 deletions snippets/react-native/list_payments.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import {
listPayments,
PaymentTypeFilter
} from "@breeztech/react-native-breez-sdk"

const exampleListPayments = async () => {
// ANCHOR: list-payments
const payments = listPayments({ filter: PaymentTypeFilter.ALL })
// ANCHOR_END: list-payments
}

const exampleListPaymentsFiltered = async () => {
// ANCHOR: list-payments-filtered
const payments = listPayments({
filter: PaymentTypeFilter.SENT,
fromTimestamp: 1696880000,
includeFailures: true
})
// ANCHOR_END: list-payments-filtered
}
25 changes: 25 additions & 0 deletions snippets/react-native/lnurl_auth.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import {
InputTypeVariant,
lnurlAuth,
LnUrlCallbackStatusVariant,
parseInput
} from "@breeztech/react-native-breez-sdk"

const exampleLnurlAuth = async () => {
// ANCHOR: lnurl-auth
// Endpoint can also be of the form:
// keyauth://domain.com/auth?key=val
const lnurlAuthUrl =
"lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu"

const input = await parseInput(lnurlAuthUrl)
if (input.type === InputTypeVariant.LN_URL_AUTH) {
const result = await lnurlAuth(input.data)
if (result.type === LnUrlCallbackStatusVariant.OK) {
console.log("Successfully authenticated")
} else {
console.log("Failed to authenticate")
}
}
// ANCHOR_END: lnurl-auth
}
24 changes: 24 additions & 0 deletions snippets/react-native/lnurl_pay.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import {
InputTypeVariant,
parseInput,
payLnurl
} from "@breeztech/react-native-breez-sdk"

const exampleLnurlPay = async () => {
// ANCHOR: lnurl-pay
// Endpoint can also be of the
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
const lnurlPayUrl = "[email protected]"

const input = await parseInput(lnurlPayUrl)
if (input.type === InputTypeVariant.LN_URL_PAY) {
const amountMsat = input.data.minSendable
const lnUrlPayResult = await payLnurl({
data: input.data,
amountMsat,
comment: "comment"
})
}
// ANCHOR_END: lnurl-pay
}
24 changes: 24 additions & 0 deletions snippets/react-native/lnurl_withdraw.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import {
InputTypeVariant,
parseInput,
withdrawLnurl
} from "@breeztech/react-native-breez-sdk"

const exampleLnurlWithdraw = async () => {
// ANCHOR: lnurl-withdraw
// Endpoint can also be of the form:
// lnurlw://domain.com/lnurl-withdraw?key=val
const lnurlWithdrawUrl =
"lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4exctthd96xserjv9mn7um9wdekjmmw843xxwpexdnxzen9vgunsvfexq6rvdecx93rgdmyxcuxverrvcursenpxvukzv3c8qunsdecx33nzwpnvg6ryc3hv93nzvecxgcxgwp3h33lxk"

const input = await parseInput(lnurlWithdrawUrl)
if (input.type === InputTypeVariant.LN_URL_WITHDRAW) {
const amountMsat = input.data.minWithdrawable
const lnUrlWithdrawResult = await withdrawLnurl({
data: input.data,
amountMsat,
description: "comment"
})
}
// ANCHOR_END: lnurl-withdraw
}
19 changes: 19 additions & 0 deletions snippets/react-native/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "snippets",
"version": "0.0.1",
"description": "React Native Snippets",
"main": "index.ts",
"license": "MIT",
"scripts": {
"lint": "eslint . --ext .js,.jsx,.ts,.tsx"
},
"dependencies": {
"@breeztech/react-native-breez-sdk": "0.2.7",
"react": "18.1.0",
"react-native": "0.70.6"
},
"devDependencies": {
"tsx": "^3.12.7"
}
}

52 changes: 52 additions & 0 deletions snippets/react-native/receive_onchain.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import {
inProgressSwap,
listRefundables,
openChannelFee,
receiveOnchain,
refund
} from "@breeztech/react-native-breez-sdk"

const exampleReceiveOnchain = async () => {
// ANCHOR: generate-receive-onchain-address
const swapInfo = await receiveOnchain({})

// Send your funds to the below bitcoin address
const address = swapInfo.bitcoinAddress
// ANCHOR_END: generate-receive-onchain-address
}

const exampleInProgressSwap = async () => {
// ANCHOR: in-progress-swap
const swapInfo = await inProgressSwap()
// ANCHOR_END: in-progress-swap
}

const exampleListRefundables = async () => {
// ANCHOR: list-refundables
const refundables = await listRefundables()
// ANCHOR_END: list-refundables
}

const exampleRefund = async () => {
// ANCHOR: execute-refund
const refundables = await listRefundables()
const toAddress = "..."
const satPerVbyte = 5

const refundResponse = await refund({
swapAddress: refundables[0].bitcoinAddress,
toAddress,
satPerVbyte
})
// ANCHOR_END: execute-refund
}

const exampleOpenChannelFee = async () => {
// ANCHOR: get-channel-opening-fees
const amountMsat = 10000

const openChannelFeeResponse = await openChannelFee({
amountMsat: amountMsat
})
// ANCHOR_END: get-channel-opening-fees
}
10 changes: 10 additions & 0 deletions snippets/react-native/receive_payment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { receivePayment } from "@breeztech/react-native-breez-sdk"

const exampleReceiveLightningPayment = async () => {
// ANCHOR: receive-payment
const invoice = await receivePayment({
amountMsat: 3000000,
description: "Invoice for 3000 sats"
})
// ANCHOR: receive-payment
}
49 changes: 49 additions & 0 deletions snippets/react-native/send_onchain.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import {
ReverseSwapPairInfo,
fetchReverseSwapFees,
inProgressReverseSwaps,
sendOnchain
} from "@breeztech/react-native-breez-sdk"

const exampleFetchReverseSwapFees = async () => {
// ANCHOR: estimate-current-reverse-swap-total-fees
const currentFees = await fetchReverseSwapFees({ sendAmountSat: 50000 })

console.log(
`Total estimated fees for reverse swap: ${currentFees.totalEstimatedFees}`
)
// ANCHOR_END: estimate-current-reverse-swap-total-fees
}

const exampleListCurrentFees = (currentFees: ReverseSwapPairInfo) => {
// ANCHOR: get-current-reverse-swap-min-max
console.log(`Minimum amount, in sats: ${currentFees.min}`)
console.log(`Maximum amount, in sats: ${currentFees.max}`)
// ANCHOR_END: get-current-reverse-swap-min-max
}

const exampleSendOnchain = async (currentFees: ReverseSwapPairInfo) => {
// ANCHOR: start-reverse-swap
const onchainRecipientAddress = "bc1.."
const amountSat = currentFees.min
const satPerVbyte = 5

const reverseSwapInfo = await sendOnchain({
amountSat,
onchainRecipientAddress,
pairHash: currentFees.feesHash,
satPerVbyte
})
// ANCHOR_END: start-reverse-swap
}

const exampleInProgressReverseSwaps = async () => {
// ANCHOR: check-reverse-swaps-status
const swaps = await inProgressReverseSwaps()
for (const swap of swaps) {
console.log(
`Reverse swap ${swap.id} in progress, status is ${swap.status}`
)
}
// ANCHOR_END: check-reverse-swaps-status
}
12 changes: 12 additions & 0 deletions snippets/react-native/send_payment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { sendPayment } from "@breeztech/react-native-breez-sdk"

const exampleSendLightningPayment = async () => {
// ANCHOR: send-payment
const bolt11 = "..."

const sendPaymentResponse = await sendPayment({
bolt11,
amountMsat: 3000000
})
// ANCHOR_END: send-payment
}
12 changes: 12 additions & 0 deletions snippets/react-native/send_spontaneous_payment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { sendSpontaneousPayment } from "@breeztech/react-native-breez-sdk"

const exampleSendSpontaneousPayment = async () => {
// ANCHOR: send-spontaneous-payment
const nodeId = "..."

const sendPaymentResponse = await sendSpontaneousPayment({
nodeId,
amountMsat: 3000000
})
// ANCHOR_END: send-spontaneous-payment
}
7 changes: 7 additions & 0 deletions snippets/react-native/static_channel_backup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { staticBackup } from "@breeztech/react-native-breez-sdk"

const exampleStaticBackup = async () => {
// ANCHOR: static-channel-backup
let backupData = await staticBackup({ workingDir: "<working directory>" })
// ANCHOR_END: static-channel-backup
}
Loading

0 comments on commit 07b5577

Please sign in to comment.