QuranData.fromJson constructor

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

Creates QuranData from JSON

Implementation

factory QuranData.fromJson(Map<String, dynamic> json) {
  final surahsList = json['surahs'] as List<dynamic>;

  // Calculate metadata from surahs
  final totalAyat = surahsList.fold<int>(0, (sum, surahJson) {
    final surah = surahJson as Map<String, dynamic>;
    return sum + (surah['numberOfAyahs'] as int);
  });

  final meccanCount = surahsList.where((surahJson) {
    final surah = surahJson as Map<String, dynamic>;
    return surah['revelationType'] == 'Meccan';
  }).length;

  final medinanCount = surahsList.length - meccanCount;

  return QuranData(
    version: json['version'] as String? ?? '1.1',
    source:
        json['source'] as String? ?? 'Tanzil Project - https://tanzil.net',
    surahs: surahsList
        .map((surahJson) => Surah.fromJson(surahJson as Map<String, dynamic>))
        .toList(),
    metadata: QuranMetadata(
      totalSurahs: surahsList.length,
      totalAyat: totalAyat,
      meccanSurahs: meccanCount,
      medinanSurahs: medinanCount,
      dataVersion: json['version'] as String? ?? '1.1',
      lastUpdated: DateTime.now(), // Could be parsed from JSON if available
    ),
  );
}