AppRelease.fromJson constructor

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

Implementation

factory AppRelease.fromJson(Map<String, dynamic> json) {
  final downloadsList =
      (json['downloads'] as List<dynamic>?)
          ?.map((d) => DownloadAsset.fromJson(d as Map<String, dynamic>))
          .toList() ??
      [];

  // Parse screenshots - filter out empty strings
  final screenshotsList =
      (json['screenshots'] as List<dynamic>?)
          ?.map((s) => s.toString())
          .where((s) => s.isNotEmpty)
          .toList() ??
      [];

  return AppRelease(
    id: json['id']?.toString() ?? '',
    packageName: json['package_name'] ?? '',
    appName: json['app_name'] ?? 'Unknown App',
    repository: json['repository'] ?? '',
    repositoryUrl: json['repository_url'] ?? '',
    tag: json['tag'] ?? '',
    version: json['version'] ?? '1.0.0',
    buildNumber: json['build_number'] ?? 1,
    description: json['description'],
    releaseNotes: json['release_notes'],
    apkUrl: json['apk_url'],
    apkSize: json['apk_size'],
    publishedAt: json['release_date'] != null
        ? DateTime.parse(json['release_date'])
        : DateTime.now(),
    iconUrl: json['icon_url'],
    channel: json['channel'] ?? 'official',
    isBeta: json['is_beta'] ?? false,
    downloads: downloadsList,
    screenshots: screenshotsList,
  );
}