package eu.kanade.tachiyomi.source import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import rx.Observable import suwayomi.tachidesk.manga.impl.util.lang.awaitSingle /** * A basic interface for creating a source. It could be an online source, a local source, etc. */ interface Source { /** * ID for the source. Must be unique. */ val id: Long /** * Name of the source. */ val name: String val lang: String get() = "" /** * Get the updated details for a manga. * * @since extensions-lib 1.5 * @param manga the manga to update. * @return the updated manga. */ @Suppress("DEPRECATION") suspend fun getMangaDetails(manga: SManga): SManga = fetchMangaDetails(manga).awaitSingle() /** * Get all the available chapters for a manga. * * @since extensions-lib 1.5 * @param manga the manga to update. * @return the chapters for the manga. */ @Suppress("DEPRECATION") suspend fun getChapterList(manga: SManga): List = fetchChapterList(manga).awaitSingle() /** * Get the list of pages a chapter has. Pages should be returned * in the expected order; the index is ignored. * * @since extensions-lib 1.5 * @param chapter the chapter. * @return the pages for the chapter. */ @Suppress("DEPRECATION") suspend fun getPageList(chapter: SChapter): List = fetchPageList(chapter).awaitSingle() @Deprecated( "Use the non-RxJava API instead", ReplaceWith("getMangaDetails"), ) fun fetchMangaDetails(manga: SManga): Observable = throw IllegalStateException("Not used") @Deprecated( "Use the non-RxJava API instead", ReplaceWith("getChapterList"), ) fun fetchChapterList(manga: SManga): Observable> = throw IllegalStateException("Not used") @Deprecated( "Use the non-RxJava API instead", ReplaceWith("getPageList"), ) fun fetchPageList(chapter: SChapter): Observable> = throw IllegalStateException("Not used") } // fun Source.icon(): Drawable? = Injekt.get().getAppIconForSource(this)