mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-10-30 00:47:48 +00:00
cdf081edfd
* thorChain btc to eth swap
* eth to btc swap
* update the UI
* update localization
* Update thorchain_exchange.provider.dart
* minor fixes
* minor fix
* fix min amount bug
* revert amount_converter changes
* fetching thorChain traid info
* resolve evm related merge conflicts
* minor fix
* Fix eth transaction hash for Thorchain Integration
* add new status endpoint and refund address for eth
* Adjust affiliate fee
* Fix conflicts with main
* review comments + transaction filter item
* taproot addresses check
* added 10 outputs check
* Update thorchain_exchange.provider.dart
* minor fixes
* update thorchain title
* fix fetching rate for thorchain
* Revert "fix fetching rate for thorchain"
This reverts commit 3aa1386ecf
.
* fix thorchain exchange rate
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
62 lines
1.9 KiB
Dart
62 lines
1.9 KiB
Dart
import 'package:cw_bitcoin/bitcoin_commit_transaction_exception.dart';
|
|
import 'package:bitcoin_base/bitcoin_base.dart';
|
|
import 'package:cw_core/pending_transaction.dart';
|
|
import 'package:cw_bitcoin/electrum.dart';
|
|
import 'package:cw_bitcoin/bitcoin_amount_format.dart';
|
|
import 'package:cw_bitcoin/electrum_transaction_info.dart';
|
|
import 'package:cw_core/transaction_direction.dart';
|
|
import 'package:cw_core/wallet_type.dart';
|
|
|
|
class PendingBitcoinTransaction with PendingTransaction {
|
|
PendingBitcoinTransaction(this._tx, this.type,
|
|
{required this.electrumClient, required this.amount, required this.fee, this.network})
|
|
: _listeners = <void Function(ElectrumTransactionInfo transaction)>[];
|
|
|
|
final WalletType type;
|
|
final BtcTransaction _tx;
|
|
final ElectrumClient electrumClient;
|
|
final int amount;
|
|
final int fee;
|
|
final BasedUtxoNetwork? network;
|
|
|
|
@override
|
|
String get id => _tx.txId();
|
|
|
|
@override
|
|
String get hex => _tx.serialize();
|
|
|
|
@override
|
|
String get amountFormatted => bitcoinAmountToString(amount: amount);
|
|
|
|
@override
|
|
String get feeFormatted => bitcoinAmountToString(amount: fee);
|
|
|
|
@override
|
|
int? get outputCount => _tx.outputs.length;
|
|
|
|
final List<void Function(ElectrumTransactionInfo transaction)> _listeners;
|
|
|
|
@override
|
|
Future<void> commit() async {
|
|
final result = await electrumClient.broadcastTransaction(transactionRaw: hex, network: network);
|
|
|
|
if (result.isEmpty) {
|
|
throw BitcoinCommitTransactionException();
|
|
}
|
|
|
|
_listeners.forEach((listener) => listener(transactionInfo()));
|
|
}
|
|
|
|
void addListener(void Function(ElectrumTransactionInfo transaction) listener) =>
|
|
_listeners.add(listener);
|
|
|
|
ElectrumTransactionInfo transactionInfo() => ElectrumTransactionInfo(type,
|
|
id: id,
|
|
height: 0,
|
|
amount: amount,
|
|
direction: TransactionDirection.outgoing,
|
|
date: DateTime.now(),
|
|
isPending: true,
|
|
confirmations: 0,
|
|
fee: fee);
|
|
}
|