diff --git a/app/lib/service/tx/lib/src/send_tx_dart.dart b/app/lib/service/tx/lib/src/send_tx_dart.dart index 65ce38156..53c7b8846 100644 --- a/app/lib/service/tx/lib/src/send_tx_dart.dart +++ b/app/lib/service/tx/lib/src/send_tx_dart.dart @@ -4,7 +4,7 @@ import 'dart:typed_data'; import 'package:convert/convert.dart'; import 'package:encointer_wallet/service/service.dart'; -import 'package:ew_polkadart/ew_polkadart.dart' show Provider, EncointerKusama, BlockHash, SubscriptionResponse; +import 'package:ew_polkadart/ew_polkadart.dart' show AuthorApi, BlockHash, EncointerKusama, ExtrinsicStatus, Provider; import 'package:ew_polkadart/generated/encointer_kusama/types/frame_system/event_record.dart'; import 'package:ew_polkadart/generated/encointer_kusama/types/frame_system/phase.dart'; import 'package:ew_polkadart/runtime_error.dart'; @@ -108,40 +108,28 @@ class EWAuthorApi

{ /// Submit a fully formatted extrinsic and return a subscription /// which emits txStatus updates. - Future submitAndWatchExtrinsic(Extrinsic extrinsic) async { - final params = [extrinsic.hexPrefixed]; - - final subscription = await _provider.subscribe( - 'author_submitAndWatchExtrinsic', - params, - onCancel: (subscription) async { - await _provider.send('author_unsubmitAndWatchExtrinsic', [subscription]); - }, - ); - - return subscription; + Future> submitAndWatchExtrinsic( + Extrinsic extrinsic, + dynamic Function(ExtrinsicStatus) onData, + ) { + return AuthorApi(_provider).submitAndWatchExtrinsic(extrinsic._encoded, onData); } Future submitAndWatchExtrinsicWithReport(Extrinsic extrinsic) async { final hash = extrinsic.hash; - final subResponse = await submitAndWatchExtrinsic(extrinsic); - final completer = Completer(); - ExtrinsicReport? report; - final sub = subResponse.stream.listen((event) async { - Log.d('ExtrinsicUpdate: ${event.result}'); - if (event.result == 'ready') { + final subResponse = await submitAndWatchExtrinsic(extrinsic, (xtUpdate) async { + Log.d('ExtrinsicUpdate: $xtUpdate'); + + if (xtUpdate.type == 'ready') { Log.p('Xt is ready'); - // ignore: avoid_dynamic_calls - } else if (event.result['inBlock'] != null) { - Log.p('Xt is in block: ${event.result}'); - // ignore: avoid_dynamic_calls - } else if (event.result['finalized'] != null) { - // ignore: avoid_dynamic_calls - final blockHashHex = event.result['finalized'].toString(); + } else if (xtUpdate.type == 'inBlock') { + Log.p('Xt is in block: ${xtUpdate.value}'); + } else if (xtUpdate.type == 'finalized') { + final blockHashHex = xtUpdate.value.toString(); final blockHash = hexToUint8(blockHashHex); final kusama = EncointerKusama(_provider); @@ -170,7 +158,7 @@ class EWAuthorApi

{ }); await completer.future; - await sub.cancel(); + await subResponse.cancel(); return report!; } }