package tachiyomi.domain.source.model import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SMangaUpdate class StubSource( override val id: Long, override val lang: String, override val name: String, ) : Source { private val isInvalid: Boolean = name.isBlank() || lang.isBlank() override val supportsLatest: Boolean = false override suspend fun getPopularManga(page: Int): MangasPage = throw SourceNotInstalledException() override suspend fun getLatestUpdates(page: Int): MangasPage = throw SourceNotInstalledException() override suspend fun getSearchManga(page: Int, query: String, filters: FilterList): MangasPage = throw SourceNotInstalledException() override suspend fun getMangaUpdate( manga: SManga, chapters: List, fetchDetails: Boolean, fetchChapters: Boolean, ): SMangaUpdate = throw SourceNotInstalledException() override suspend fun getPageList(chapter: SChapter): List = throw SourceNotInstalledException() override fun toString(): String = if (!isInvalid) "$name (${lang.uppercase()})" else id.toString() companion object { fun from(source: Source): StubSource { return StubSource(id = source.id, lang = source.lang, name = source.name) } } } class SourceNotInstalledException : Exception()