changeRoles method
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;
}