package ani.dantotsu.parsers import ani.dantotsu.Lazier import ani.dantotsu.lazyList import eu.kanade.tachiyomi.extension.manga.model.MangaExtension import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first object MangaSources : MangaReadSources() { // Instantiate the static parser private val offlineMangaParser by lazy { OfflineMangaParser() } override var list: List> = emptyList() suspend fun init(fromExtensions: StateFlow>) { // Initialize with the first value from StateFlow val initialExtensions = fromExtensions.first() list = createParsersFromExtensions(initialExtensions) + Lazier({ OfflineMangaParser() }, "Downloaded") // Update as StateFlow emits new values fromExtensions.collect { extensions -> list = createParsersFromExtensions(extensions) + Lazier({ OfflineMangaParser() }, "Downloaded") } } private fun createParsersFromExtensions(extensions: List): List> { return extensions.map { extension -> val name = extension.name Lazier({ DynamicMangaParser(extension) }, name) } } } object HMangaSources : MangaReadSources() { val aList: List> = lazyList() suspend fun init(fromExtensions: StateFlow>) { //todo } override val list = listOf(aList,MangaSources.list).flatten() }