updateOrgUsers method

Future<void> updateOrgUsers(
  1. Organization org, {
  2. List<String>? add,
  3. List<String>? remove,
  4. Key? orgKey,
})

Implementation

Future<void> updateOrgUsers(
  Organization org, {
  List<String>? add,
  List<String>? remove,
  Key? orgKey,
}) async {
  emit(state.startLoading(updateOrgUsersLoading));

  try {
    List<Future<OrgUser>> removeFutures = [];
    if (remove != null) {
      for (var userId in remove) {
        removeFutures.add(provider.deleteOrgUser(
          orgId: org.orgId,
          userId: userId,
        ));
      }
      await Future.wait<OrgUser>(removeFutures).onError((error, stackTrace) {
        emit(
          state.addMessage(
            Message.error(
              _localizations.removeOrgUsersError,
            ),
          ),
        );
        return [];
      });
    }

    List<Future<OrgUser>> addFutures = [];
    if (add != null) {
      for (var userId in add) {
        addFutures.add(provider.addOrgUser(
          orgId: org.orgId,
          userId: userId,
        ));
      }
      await Future.wait<OrgUser>(addFutures).onError((error, stackTrace) {
        emit(
          state.addMessage(
            Message.error(
              _localizations.addOrgUsersError,
            ),
          ),
        );
        return [];
      });
    }

    return readOrgData(org);
  } on OrgServiceError catch (_) {
    emit(
      state.addMessage(
        Message.error(
          _localizations.updateOrgError,
        ),
      ),
    );
  } catch (e) {
    _logger.severe('Error updating organization: $e');

    emit(
      state.addMessage(Message.error(
        _localizations.unknownError,
      )),
    );
  } finally {
    emit(state.endLoading(updateOrgUsersLoading));
  }
}