RohdModuleInfo.fromJson constructor

RohdModuleInfo.fromJson(
  1. Map<String, dynamic> json
)

Build from a JSON map (as returned by the extension host or DTD).

Implementation

factory RohdModuleInfo.fromJson(Map<String, dynamic> json) {
  final available = json['extensionAvailable'] as bool? ?? false;
  final module = json['module'] as String?;
  final error = json['error'] as String?;
  final dtdHealthy = json['dtdHealthy'] as bool?;
  final dtdRegistrationConflict =
      json['dtdRegistrationConflict'] as bool? ?? false;
  final dtdStatusMessage = json['dtdStatusMessage'] as String?;
  final fstLoading = json['fstLoading'] as bool? ?? false;

  final rawFormats = json['formats'] as Map<String, dynamic>? ?? const {};
  final formats = <RohdSourceFormat, RohdFormatInfo>{};
  for (final entry in rawFormats.entries) {
    final fmt = _parseFormat(entry.key);
    if (fmt == null) {
      continue;
    }
    final fmtMap = entry.value as Map<String, dynamic>? ?? const {};
    formats[fmt] = RohdFormatInfo(
      available: fmtMap['available'] as bool? ?? false,
      fileFound: fmtMap['fileFound'] as bool? ?? false,
      path: fmtMap['path'] as String?,
    );
  }

  return RohdModuleInfo(
    extensionAvailable: available,
    module: module,
    formats: formats,
    error: error,
    dtdHealthy: dtdHealthy,
    dtdRegistrationConflict: dtdRegistrationConflict,
    dtdStatusMessage: dtdStatusMessage,
    fstLoading: fstLoading,
  );
}