createWallet method

Future<M4eUniqueId> createWallet (M4eUniqueId userId, M4eWalletForm m4eWalletForm)

Creates an m4e user-wallet and returns created wallet M4eUniqueId

Creates owner-permission on wallet

Throws M4eServerException if request fails.

Throws [ServerException] with NO_INTERNET_CONNECTION error code device is not connected to the internet

Implementation

Future<M4eUniqueId> createWallet(
    M4eUniqueId userId, M4eWalletForm m4eWalletForm) async {
  if ((await _connectionChecker.hasConnection) ?? false) {
    try {
      final _walletId = await _walletApi.createWallet(userId, m4eWalletForm);

      // create EntityWalletAccess permission form
      final _permissionForm = M4ePermissionForm(
        subId: userId,
        objId: _walletId,
        type: EntityWalletAccess.TYPE,
        encoding: <M4eAccessPermissionSet>[
          EntityWalletAccess.see,
          EntityWalletAccess.view,
          EntityWalletAccess.pay,
          EntityWalletAccess.grant,
          EntityWalletAccess.alter,
          EntityWalletAccess.create,
          EntityWalletAccess.destroy,
        ],
      );

      // set owner permissions on wallet
      await _permissionApi.setPermission(_permissionForm);

      return _walletId;
    } catch (e) {
      rethrow;
    }
  }

  throw M4eExceptionMessages.kNoInternetConnectionException;
}