replaceRole method

Future<int> replaceRole(
  1. String role,
  2. String replacement
)

Implementation

Future<int> replaceRole(String role, String replacement) async {
  final replacedPersistently = await service?.replaceRole(role, replacement);
  final entries = _users.entries
      .where((entry) => entry.value.roles.contains(role))
      .toList(growable: false);
  for (final entry in entries) {
    final fingerprint = entry.value.fingerprint;
    if (replacedPersistently != true && fingerprint != null) {
      final updatedRoles = {...entry.value.roles, replacement}..remove(role);
      await service?.updateUser(fingerprint, roles: updatedRoles);
    }
    _users[entry.key] = entry.value.copyWith(
      roles: {...entry.value.roles, replacement}..remove(role),
    );
  }
  return entries.length;
}