register method

Future register(
  1. String username,
  2. String password,
  3. String displayName,
  4. String token,
)

Implementation

Future<ffi.Client> register(
  String username,
  String password,
  String displayName,
  String token,
) async {
  // To be removed when client management is implemented.
  for (final client in _clients) {
    if (client.userId().toString() == username) {
      return client;
    }
  }

  String appDocPath = await appDir();
  String appCachePath = await appCacheDir();
  final client = await _api.registerWithToken(
    appDocPath,
    appCachePath,
    username,
    password,
    token,
    defaultServerName,
    defaultServerUrl,
    userAgent,
  );
  final account = client.account();
  await account.setDisplayName(displayName);
  if (_clients.length == 1 && _clients[0].isGuest()) {
    // we are replacing a guest account
    _clients.removeAt(0);
  }
  _clients.add(client);
  await _persistSessions();
  return client;
}