saveKeyStore method

Future<File> saveKeyStore(
  1. KeyStore store,
  2. String password, {
  3. String? name,
})

Implementation

Future<File> saveKeyStore(KeyStore store, String password,
    {String? name}) async {
  name ??= (await store.getKeyPair(0).address).toString();

  final port = ReceivePort();

  final args = SaveKeyStoreArguments(store, password, name, port.sendPort);
  Isolate? isolate = await Isolate.spawn<SaveKeyStoreArguments>(
      saveKeyStoreFunction, args,
      onError: port.sendPort, onExit: port.sendPort);

  StreamSubscription? sub;
  var completer = Completer<File>();

  sub = port.listen((data) async {
    if (data != null) {
      if (data is String) {
        logger.info(data);
        var location = File(path.join(walletPath!.path, name));
        await location.writeAsString(data);
        completer.complete(location);
      } else {
        throw data;
      }
      await sub?.cancel();
      if (isolate != null) {
        isolate!.kill(priority: Isolate.immediate);
        isolate = null;
      }
    }
  });
  return completer.future;
}