getTransactionInfo method

Future<BitcoinTransactionInfoModel> getTransactionInfo(
  1. String accountID,
  2. String transferAmount,
  3. int actuelFees
)

Implementation

Future<BitcoinTransactionInfoModel> getTransactionInfo(
    String accountID, String transferAmount, int actuelFees) async {
  final res = await networkClient.getRequest(
    BitcoinBlockChainNetworkUrls.listOfUrls.first +
        '/addrs/$accountID?unspentOnly=true',
  );
  if (res.isSuccess) {
    num currentSum = 0;
    var indexWhithBigestSum = 0;
    List<dynamic> listWithTXrefs = res.data['txrefs'];
    for (int i = 0; i < listWithTXrefs.length; i++) {
      if (currentSum < listWithTXrefs[i]['value']) {
        currentSum = listWithTXrefs[i]['value'];
        indexWhithBigestSum = i;
      }
    }
    if (currentSum > num.parse(transferAmount) + actuelFees * 200) {
      final tx_hash =
          listWithTXrefs[indexWhithBigestSum]['tx_hash'].toString();
      final ref_balance =
          listWithTXrefs[indexWhithBigestSum]['value'].toString();
      final tx_output = int.tryParse(listWithTXrefs[indexWhithBigestSum]
                  ['tx_output_n']
              .toString()) ??
          0;
      final data = {
        "tx_hash": tx_hash,
        "ref_balance": num.parse(ref_balance),
        "tx_output": tx_output
      };
      List<dynamic> listData = [data];
      return BitcoinTransactionInfoModel(data: listData);
    } else {
      List<dynamic> listData = [];
      for (int i = 0; i < listWithTXrefs.length; i++) {
        final tx_hash = listWithTXrefs[i]['tx_hash'].toString();
        final ref_balance = listWithTXrefs[i]['value'].toString();
        final tx_output =
            int.tryParse(listWithTXrefs[i]['tx_output_n'].toString()) ?? 0;
        final data = {
          "tx_hash": tx_hash,
          "ref_balance": num.parse(ref_balance),
          "tx_output": tx_output
        };
        listData.add(data);
      }
      return BitcoinTransactionInfoModel(data: listData);
    }
  } else {
    return BitcoinTransactionInfoModel(data: [
      {'tx_hash': '', 'ref_balance': '', 'tx_output': 0}
    ]);
  }
}