addUser method

Future<SetonixUser?> addUser(
  1. Channel channel, [
  2. String? fingerprint,
  3. String? name
])

Implementation

Future<SetonixUser?> addUser(
  Channel channel, [
  String? fingerprint,
  String? name,
]) async {
  SetonixUser? user;
  if (fingerprint != null) {
    user = await service?.getUser(fingerprint);
    if (user == null) {
      if (whitelistEnabled) {
        throw KickMessage(reason: KickReason.notWhitelisted);
      }
    } else {
      name = user.name;
      if (whitelistEnabled && !user.onWhitelist) {
        throw KickMessage(reason: KickReason.notWhitelisted);
      }
    }
  }
  name ??= _generateGuestName();
  if (containsUserName(name)) {
    return null;
  }
  if (user == null) {
    user = SetonixUser(fingerprint: fingerprint, name: name);
    if (fingerprint != null) {
      await service?.updateUser(
        fingerprint,
        name: name,
        onWhitelist: false,
        createIfNotExists: true,
      );
    }
  }
  _users[channel] = user;
  return user;
}