changeRoles method

Future<bool> changeRoles(
  1. String reference,
  2. Set<String> roles
)

Implementation

Future<bool> changeRoles(String reference, Set<String> roles) async {
  roles = {...roles, kDefaultServerRole};
  final user = await getUserByReference(reference);
  if (user == null) return false;
  final fingerprint = user.fingerprint;
  if (fingerprint != null) {
    final result = await service?.updateUser(fingerprint, roles: roles);
    if (result == false) return false;
  }
  final entry = _users.entries.firstWhereOrNull(
    (entry) =>
        entry.value == user ||
        (fingerprint != null && entry.value.fingerprint == fingerprint),
  );
  if (entry == null) return fingerprint != null;
  _users[entry.key] = entry.value.copyWith(roles: roles);
  _notifyChanged();
  return true;
}