getSurahContent method

Future<SurahContentModel> getSurahContent({
  1. required int surahNumber,
  2. String? translationLang,
  3. String? transliterationLang,
  4. String? tafseer,
})

returns surah data, including aya, aya translation, transliteration and tafseer

Implementation

Future<SurahContentModel> getSurahContent(
    {required int surahNumber,
    String? translationLang,
    String? transliterationLang,
    String? tafseer}) async {
  if (surahNumber < 1 || surahNumber > 114) {
    return SurahContentModel();
  }

  //call if the object still empty
  if (surah.id != surahNumber) {
    surah = await getSurahArabicContent(surahNumber);
  }

  //check if need to re-retrieve or not
  if (surah.translationLang != translationLang) {
    await _getAndSetTranslation(
        surahNumber: surahNumber, translationLang: translationLang);
  }

  //check if need to re-retrieve or not
  if (surah.transliterationLang != transliterationLang) {
    await _getAndSetTransliteration(
      surahNumber: surahNumber,
      transliterationLang: transliterationLang,
    );
  }

  //check if need to re-retrieve or not
  if (surah.tafseer != tafseer) {
    await _getAndSetTafseer(
        surahNumber: surahNumber,
        translationLang: translationLang,
        tafseer: tafseer);
  }
  surah.translationLang = translationLang;
  surah.transliterationLang = transliterationLang;
  surah.tafseer = tafseer;

  return surah;
}