apiTx.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'package:polkawallet_sdk/api/api.dart';
  4. import 'package:polkawallet_sdk/api/types/txInfoData.dart';
  5. import 'package:polkawallet_sdk/service/tx.dart';
  6. class ApiTx {
  7. ApiTx(this.apiRoot, this.service);
  8. final PolkawalletApi apiRoot;
  9. final ServiceTx service;
  10. /// Estimate tx fees, [params] will be ignored if we have [rawParam].
  11. Future<TxFeeEstimateResult> estimateFees(TxInfoData txInfo, List params,
  12. {String? rawParam, String? jsApi}) async {
  13. final String param = rawParam != null ? rawParam : jsonEncode(params);
  14. final Map tx = txInfo.toJson();
  15. final res = await (service.estimateFees(tx, param, jsApi: jsApi)
  16. as FutureOr<Map<dynamic, dynamic>>);
  17. return TxFeeEstimateResult.fromJson(res as Map<String, dynamic>);
  18. }
  19. // Future<dynamic> _testSendTx() async {
  20. // Completer c = new Completer();
  21. // void onComplete(res) {
  22. // c.complete(res);
  23. // }
  24. //
  25. // Timer(Duration(seconds: 6), () => onComplete({'hash': '0x79867'}));
  26. // return c.future;
  27. // }
  28. /// Send tx, [params] will be ignored if we have [rawParam].
  29. /// [onStatusChange] is a callback when tx status change.
  30. /// @return txHash [string] if tx finalized success.
  31. Future<Map> signAndSend(
  32. TxInfoData txInfo,
  33. List params,
  34. String password, {
  35. Function(String)? onStatusChange,
  36. String? rawParam,
  37. }) async {
  38. final param = rawParam != null ? rawParam : jsonEncode(params);
  39. final Map tx = txInfo.toJson();
  40. print(tx);
  41. print(param);
  42. final res = await (service.signAndSend(
  43. tx,
  44. param,
  45. password,
  46. onStatusChange ?? (status) => print(status),
  47. ) as FutureOr<Map<dynamic, dynamic>>);
  48. if (res['error'] != null) {
  49. throw Exception(res['error']);
  50. }
  51. return res;
  52. }
  53. }