ElicitationRequest.fromJson constructor

ElicitationRequest.fromJson(
  1. Map<String, dynamic> params
)

Implementation

factory ElicitationRequest.fromJson(Map<String, dynamic> params) {
  final modeStr = params['mode'] as String?;
  final mode =
      modeStr == 'url' ? ElicitationMode.url : ElicitationMode.form;

  final schema = params['requestedSchema'] != null
      ? Map<String, dynamic>.from(params['requestedSchema'] as Map)
      : null;

  final fields = <String, ElicitationFieldSchema>{};
  final props = schema?['properties'];
  if (props is Map) {
    props.forEach((key, value) {
      if (value is Map) {
        fields[key.toString()] = ElicitationFieldSchema.fromJson(
          Map<String, dynamic>.from(value),
        );
      }
    });
  }

  final requiredRaw = schema?['required'];
  final requiredFields = requiredRaw is List
      ? requiredRaw.map((e) => e.toString()).toList()
      : <String>[];

  return ElicitationRequest(
    message: params['message'] as String? ?? '',
    mode: mode,
    url: params['url'] as String?,
    requestedSchema: schema,
    fields: fields,
    requiredFields: requiredFields,
    raw: Map<String, dynamic>.from(params),
  );
}