Commit Graph

36 Commits

Author SHA1 Message Date
Ross Savage
0a8f2545db Add config to flutter example (#274) 2024-06-03 18:46:19 +02:00
Erdem Yerebasmaz
564d75d59d Mark default_config && parse_invoice as sync functions on Dart bindings (#280)
- Generate Dart bindings
2024-06-03 11:53:34 +03:00
Ross Savage
5d9a8f18a3 Add Config (#267)
* Add config

* Add rustdocs to Config, send_payment (#271)

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-06-01 06:32:45 +02:00
ok300
f6082f2aa5 Add global SDK logger (#242)
* Add SDK global logger

* Add bindings

* Fix path to internal uniffi log

* Exclude "set_log_stream" from generated RN methods

* Move logger-specific structs to a separate module

* Delegate init_logging to method in logger.rs

* Rename uniffi BindingLogger to UniffiBindingLogger

* Add set_log_stream for dart bindings

* Add SDK logger to Dart bindings

* Rename dart binding logger to DartBindingLogger

* Add rustdocs

* RN bindings: Add manual handling for setLogStream()

* Re-generate dart bindings

* Re-generate RN bindings

* Remove LOG_INIT cell

* Set global maximum log level once on initialization

Return a LiquidSdkError::Generic instead of Anyhow error when initializing log stream on Dart bindings

* Do not panic when initializing binding loggers

* Rename LogStream to Logger

---------

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
2024-05-31 18:01:39 +00:00
Erdem Yerebasmaz
e0322c39d6 Remove tokio runtime (#239)
* Remove obsolete Tokio runtime dependency on bindings

* Apply changes on example app

* Update "Getting Started" on README

* Update pubspec.lock
2024-05-30 17:04:58 +03:00
ok300
e5dba1043e Add ability to parse an invoice (#240)
* Add ability to parse an invoice

* Simplify LNInvoice initialization

* Add missing LNInvoice fields

* Cargo fmt

* Re-generate bindings after merging main branch

* Explicitly check the invoice signature

* Remove redundant signature check

* Strip potential lightning: prefix before parsing bolt11
2024-05-30 13:26:00 +00:00
Ross Savage
35561bacc5 Improve stream handling (#244)
* Improve stream management

* Check swap for existing lockup/refund tx

* Set broadcast capacity to 30
2024-05-30 14:54:15 +02:00
Erdem Yerebasmaz
608f54ea69 Bump flutter_rust_bridge_codegen to 2.0.0-dev.36 and generate bindings (#237) 2024-05-28 14:41:47 +03:00
yse
9d2f6f0839 Fix cooperative refund and improve keypair generation (#223)
* feat: add random keypair generation

* Encapsulate decode_keypair in SendSwap::get_refund_keypair()

* Add refund_tx_id and refund_tx_amount_sat to Payment

* fix: remove blocking on refund

* fix: change `refund_private_key` order

* fix: rebasing

* fix: set `next_unused_address` as refund output

* Handle refunds in `get_info`, `list_payments` (#226)

* Exclude refund txs from payment list

* Adjust balance calculation to account for refunds

* fix: revert boltz changes and fix locktime

* Replace subquery with LEFT JOIN to get refund data

* Rewrite locktime check for more clarity

* Rewrite locktime check for more clarity

* Fix select_payment_query in case of refunds

* Include boltz-client fixes (handling of unwraps for failed broadcasts)

* Cargo.toml: Use boltz-client branch instead of commit

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-05-28 08:07:29 +00:00
yse
2fcefee45e Add option to specify backup path (#228)
* feat: add backup_path to backup method

* Re-generate bindings with flutter_rust_bridge`@ 2.0.0-dev.35

* Rebased on main

* Update backup path description

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-05-27 19:01:49 +00:00
Ross Savage
06b848a8f3 SDK events framework (#193)
* Add events framework

* Adapt RN codegen and add synced event

* Only use get_connection internally
2024-05-25 06:20:14 +02:00
Erdem Yerebasmaz
5dd37097d8 [Flutter] Add prefix for deducted fees 2024-05-24 12:31:24 +03:00
Erdem Yerebasmaz
1777a7bfe2 [Flutter] Fix snacbar behavior 2024-05-24 12:27:10 +03:00
Erdem Yerebasmaz
10fa1929df [Flutter] Show pending balances 2024-05-24 12:26:48 +03:00
Erdem Yerebasmaz
fed19151fd [Flutter] Pass paymentsStream as a broadcast streams 2024-05-24 12:18:54 +03:00
Erdem Yerebasmaz
7b1b78a2d9 Update example app on Flutter plugin (#220)
* Update example app on Flutter plugin

* Expose `empty_wallet_cache` through Dart bindings (#224)
2024-05-24 12:12:29 +03:00
Erdem Yerebasmaz
a9cc69743d Expose sync through Dart bindings (#221)
Reformat build_other.dart
2024-05-23 17:59:01 +03:00
ok300
9d5097a55c Send: store preimage on Complete 2024-05-23 13:58:40 +00:00
Erdem Yerebasmaz
a861011952 Generate Bindings
- Fix list_payments API on bindings
2024-05-23 10:12:53 +03:00
Erdem Yerebasmaz
a2bbcd1f2b Migrate to declarative apply of Flutter's Gradle plugins
Deprecated imperative apply of Flutter's Gradle plugins
- https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply
2024-05-23 10:10:42 +03:00
Erdem Yerebasmaz
1fe5bb353c Stop using singleton instance on Dart bindings
Apply changes to test cases on Dart plugin
2024-05-23 10:10:42 +03:00
ok300
f18f3cb9a6 Uniffi: Add list-payments to UDL (#204)
* Uniffi: Add list-payments to UDL

* Update Payment on uniffi bindings

* Update RN bindings

* Update flutter bindings

---------

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
2024-05-23 06:19:26 +00:00
ok300
c975da5b3c Payment lifecycle (#184)
* Rename swap tables: remove ongoing_ prefix

* Add swap status enums and filtering

* Swap-in: add claim_txid

* Swap-out: add claim_txid

* resolve_swap: Don't remove swap when complete

* Fixups after rebase

* Remove unused method

* Consider payment as pending based on confirmations

An onchain payment with no confirmations is considered
pending. The previous logic of converting pending swaps
into pending payments is removed, since we may have
pending swaps that should not result in pending
payments (for example on Receive, before the invoice
is paid).

* Fix swap-in query

* GetInfoResponse: fix balance, include pending

* Remove unused method

* Re-generate flutter bridge files

* Re-generate RN bindings

* Fix payment_type detection in list_payments

* Send: persist to DB when claim tx is seen

* Receive: fix occasional error when broadcasting claim

* Remove fixed TODO

* Receive: only rescan on testnet, where Electrum is used to broadcast

* Log more details when broadcasting fails

* Improve AlreadyClaimed error detection and handling

* Rename SubmarineSwapStatus::Initial to Created

* Split pending payment types into separate field status

* Rename swap status enums

* Fix INSERT query

* Bump lwk libraries

* Simplify Receive try_handle_reverse_swap_status loop

* Change resolve_swap to insert_or_update_payment

* Refactor payment data persistence

* Remove unused dependency

* Bump LWK dependencies

* Rename reconcile_payments_with_onchain

* Rename try_claim_v2

* Rename address() to next_unused_address()

* Move all claim persistence writes in try_claim

* Flatten Payment struct

* Re-generate bindings

* Expose sync() in service interface

* Set Send ws stream as nonblocking, use singleton stream

* Send_payment: sync() before handling new state

* Sync() on sdk.connect()

* Remove unused args from list_payments()

* Receive: rename DB field redeem_script to response JSON

* Convert to and from internal structs to persist CreateResponse JSON

* De-duplicate internal CreateResponse structs to prevent storing same field twice

* Schedule a periodic sync() thread on startup

* Persist swap states and add methods to transition between them

* Handle unwrap() when subscribing for WS updates

* Status Stream: handle remaining unwraps() and TODOs

* Consolidate status transitions into two SDK methods

* Status Stream: reconnect and resume tracking on disconnect

* Remove superfluous TODO

* Send swaps: correctly transition to Complete even if app killed during send_payment()

* State transitions: Move SQL queries to persistence layer

* Send: handle edge TransactionClaimed edge-case

* Send: mark as Complete after we check the preimage

* Send: remove marking as Complete on TransactionClaimed
2024-05-22 20:00:38 +00:00
Erdem Yerebasmaz
f0f282a584 Update dependencies to latest compatible
Changes on 'justfile' also effects CI step
2024-05-21 14:25:52 +03:00
Erdem Yerebasmaz
4c64525ace Update dependencies to latest 2024-05-16 13:51:14 +03:00
ok300
783bedac34 Update flutter generated bindings file 2024-05-15 10:09:12 +02:00
ok300
fd5a233e91 Flutter example app: remove calls to inexistent field 2024-05-15 09:58:43 +02:00
ok300
50a654b49c Merge branch 'main' into yse-remove-api-fields
# Conflicts:
#	packages/dart/lib/src/bindings.dart
#	packages/dart/lib/src/frb_generated.dart
#	packages/dart/lib/src/frb_generated.io.dart
#	packages/dart/lib/src/model.dart
#	packages/flutter/example/lib/main.dart
#	packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart
2024-05-15 09:20:53 +02:00
yse
28d4f264eb feat: add refund and improve send flow 2024-05-14 13:05:27 +02:00
yse
be3120c935 feat: remove PrepareSendResponse fields
feat: add `PrepareSendRequest` object

fix: rename to `claim_tx_feerate`

fix: fix reverse submarine test

feat: improve prepare_send and prepare_receive interfaces

fix: use v2 to broadcast lowball tx

feat: finalize prepare_send and prepare_receive

feat: remove manual BTC pair from response

fix: remove `pair_hash` from PrepareReceive

rebasing

updating Cargo.lock

fix: update lbtc pair method names

fixing bindings

fix: re-add uniffi_macros

add comment to elements dependency

fix: switch back to v1 fee calculation

fix: revert to v1 pair hash

fix: simplify migrations

fix: rename `FeesExpired` to `InvalidOrExpiredFees`

Log error when list_ongoing_swaps() fails

Log swap ID when list_ongoing_swaps() succeeds

Migrations: add missing ongoing_receive_swaps field

Clarify swap type (reverse vs submarine) in logs
2024-05-09 11:26:10 +03:00
Erdem Yerebasmaz
4dc16e565a Run dart format -l 110 2024-05-08 01:19:46 +03:00
Erdem Yerebasmaz
05689299f0 Update flutter_rust_bridge to 2.0.0-dev.33
Update dependencies to latest & increase the supported range
2024-05-06 14:58:31 +03:00
Erdem Yerebasmaz
51142bd9b6 Generate FFI bindings 2024-05-06 14:50:20 +03:00
Erdem Yerebasmaz
0c0287b465 Ignore symlink files for C headers
Remove symlink files from version control
2024-05-06 11:10:17 +03:00
Erdem Yerebasmaz
c782fbf058 Check Flutter bindings with CI
- Add static analysis step for Dart & Flutter packages
- Ignore warning for unused element on build scrips for Windows targets
- Continue if there are any errors with generating bindings
2024-05-06 11:10:17 +03:00
Erdem Yerebasmaz
5d966fc856 Move dart & flutter packages to packages folder on root 2024-05-03 16:05:39 +03:00