addUser method
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 {
if (!user.roles.contains(kDefaultServerRole)) {
user = user.copyWith(roles: {kDefaultServerRole, ...user.roles});
}
name = user.name;
if (user.isBanned) {
throw KickMessage(reason: KickReason.ban, message: user.banReason);
}
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;
_notifyChanged();
return user;
}