komikku/app/src/main/java/exh/ui/metadata/MetadataViewPresenter.kt

45 lines
1.4 KiB
Kotlin
Raw Normal View History

package exh.ui.metadata
import android.os.Bundle
import eu.kanade.data.DatabaseHandler
import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.Source
2020-12-21 00:56:09 +01:00
import eu.kanade.tachiyomi.source.online.MetadataSource
2021-01-27 05:47:26 +01:00
import eu.kanade.tachiyomi.util.lang.launchIO
import exh.metadata.metadata.base.RaisedSearchMetadata
import exh.metadata.metadata.base.awaitFlatMetadataForManga
2020-12-21 00:56:09 +01:00
import exh.source.getMainSource
import exh.ui.base.CoroutinePresenter
import kotlinx.coroutines.flow.MutableStateFlow
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class MetadataViewPresenter(
val manga: Manga,
val source: Source,
val preferences: PreferencesHelper = Injekt.get(),
private val db: DatabaseHandler = Injekt.get(),
2020-12-21 00:56:09 +01:00
) : CoroutinePresenter<MetadataViewController>() {
2020-12-21 00:56:09 +01:00
val meta = MutableStateFlow<RaisedSearchMetadata?>(null)
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
2021-01-27 05:47:26 +01:00
launchIO {
val flatMetadata = db.awaitFlatMetadataForManga(manga.id) ?: return@launchIO
2021-07-25 20:16:16 +02:00
val mainSource = source.getMainSource<MetadataSource<*, *>>()
if (mainSource != null) {
2021-01-27 05:47:26 +01:00
meta.value = flatMetadata.raise(mainSource.metaClass)
2020-12-21 00:56:09 +01:00
}
2021-01-27 05:47:26 +01:00
}
2020-12-21 00:56:09 +01:00
meta
2021-01-06 06:54:11 +01:00
.inView { view, metadata ->
2020-12-21 00:56:09 +01:00
view.onNextMangaInfo(metadata)
}
2021-01-06 06:54:11 +01:00
.launch()
}
}