uos.dart 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'package:polkawallet_sdk/service/index.dart';
  4. /// Support offline-signature as a hot-wallet:
  5. /// 1. makeQrCode
  6. /// 2. addSignatureAndSend: send tx with address of step1 & signature of step2.
  7. class ServiceUOS {
  8. ServiceUOS(this.serviceRoot);
  9. final SubstrateService serviceRoot;
  10. Future<Map?> addSignatureAndSend(
  11. String address,
  12. signed,
  13. Function(String) onStatusChange,
  14. ) async {
  15. final msgId =
  16. "onStatusChange${serviceRoot.webView!.getEvalJavascriptUID()}";
  17. serviceRoot.webView!.addMsgHandler(msgId, onStatusChange);
  18. final dynamic res = await serviceRoot.webView!.evalJavascript(
  19. 'keyring.addSignatureAndSend(api, "$address", "$signed")');
  20. serviceRoot.webView!.removeMsgHandler(msgId);
  21. return res;
  22. }
  23. Future<Map?> makeQrCode(Map txInfo, List params,
  24. {String? rawParam, int? ss58}) async {
  25. String param = rawParam != null ? rawParam : jsonEncode(params);
  26. final dynamic res = await serviceRoot.webView!.evalJavascript(
  27. 'keyring.makeTx(api, ${jsonEncode(txInfo)}, $param, $ss58)',
  28. );
  29. return res;
  30. }
  31. }