PatchbayPermissionCapabilities.fromJson constructor

PatchbayPermissionCapabilities.fromJson(
  1. Map<String, Object?> json
)

Implementation

factory PatchbayPermissionCapabilities.fromJson(Map<String, Object?> json) {
  final String platform = _requiredString(
    json['platform'],
    'permissionCapabilityInvalid',
  );
  final String driver = _requiredString(
    json['driver'],
    'permissionCapabilityInvalid',
  );
  final String driverVersion = _requiredString(
    json['driverVersion'],
    'permissionCapabilityInvalid',
  );
  final Object? rawPermissions = json['permissions'];
  if (rawPermissions is! Map<Object?, Object?>) {
    throw const PatchbayPermissionWireException(
      'permissionCapabilityInvalid',
    );
  }
  final Map<String, PatchbayPermissionCapability> permissions =
      <String, PatchbayPermissionCapability>{};
  for (final MapEntry<Object?, Object?> entry in rawPermissions.entries) {
    if (entry.key is! String ||
        (entry.key! as String).isEmpty ||
        entry.value is! Map<Object?, Object?>) {
      throw const PatchbayPermissionWireException(
        'permissionCapabilityInvalid',
      );
    }
    permissions[entry.key! as String] = PatchbayPermissionCapability.fromJson(
      Map<String, Object?>.from(entry.value! as Map),
    );
  }
  return PatchbayPermissionCapabilities(
    platform: platform,
    driver: driver,
    driverVersion: driverVersion,
    permissions: Map<String, PatchbayPermissionCapability>.unmodifiable(
      permissions,
    ),
  );
}