createAccount method

Future<String> createAccount({
  1. required String parentId,
  2. required String operator,
  3. String? name,
  4. String? publicName,
  5. String? owner,
  6. String? profileImageUrl,
  7. int? balanceLimit,
  8. String? contextId,
})

Implementation

Future<String> createAccount({
  required String parentId,
  required String operator,
  String? name,
  String? publicName,
  String? owner,
  String? profileImageUrl,
  int? balanceLimit,
  String? contextId,
}) async {
  final ownerBytes = owner != null ? base64Decode(owner) : null;
  final accountId = await createLedgerAccount(
    parentId: parentId,
    operator: operator,
    balanceLimit: balanceLimit,
  );
  final account = AccountMetadata()
    ..id = hex.decode(accountId)
    ..owner = ownerBytes ?? await signer.publicKey();

  if (name != null) {
    account.name = name;
  }
  if (publicName != null) {
    account.publicName = publicName;
  }
  if (profileImageUrl != null) {
    account.profileImageUrl = profileImageUrl;
  }

  final request = account.createRequest();
  final client = getServiceClient(operator);
  final envelop = await requestEnvelope(
    request: request,
    contextId: contextId != null ? hex.decode(contextId) : null,
  );
  await client.tx.createTransaction(envelop);

  return accountId;
}