updateOrgConfig method

Future<void> updateOrgConfig(
  1. String orgId, {
  2. required String key,
  3. required Map<String, dynamic> config,
})

Implementation

Future<void> updateOrgConfig(
  String orgId, {
  required String key,
  required Map<String, dynamic> config,
}) async {
  emit(state.startLoading(updateOrgConfigLoading));

  final org = state.organizations.firstWhere(
    (org) => org.orgId == orgId,
  );
  final orgConfig = Map<String, dynamic>.from(org.config);
  orgConfig[key] = config;

  try {
    final orgConfigData = jsonEncode(orgConfig);
    await provider.updateOrg(
      orgId: orgId,
      config: orgConfigData,
    );
    emit(state.copyWith(
      organizations: state.organizations.map((o) {
        if (o.orgId == orgId) {
          return o.copyWith(config: jsonDecode(orgConfigData));
        }
        return o;
      }).toList(),
    ));
  } on OrgServiceError catch (_) {
    emit(
      state.addMessage(
        Message.error(
          _localizations.updateOrgConfigError,
        ),
      ),
    );
  } catch (e) {
    _logger.severe('Error updating organization config: $e');

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