12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package eu.kanade.presentation.browse
- import androidx.compose.foundation.layout.PaddingValues
- import androidx.compose.foundation.lazy.items
- import androidx.compose.runtime.Composable
- import androidx.compose.runtime.LaunchedEffect
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.platform.LocalContext
- import eu.kanade.domain.manga.model.Manga
- import eu.kanade.presentation.components.AppBar
- import eu.kanade.presentation.components.EmptyScreen
- import eu.kanade.presentation.components.LoadingScreen
- import eu.kanade.presentation.components.Scaffold
- import eu.kanade.presentation.components.ScrollbarLazyColumn
- import eu.kanade.presentation.manga.components.BaseMangaListItem
- import eu.kanade.tachiyomi.R
- import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaPresenter
- import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaPresenter.Event
- import eu.kanade.tachiyomi.util.system.toast
- import kotlinx.coroutines.flow.collectLatest
- @Composable
- fun MigrateMangaScreen(
- navigateUp: () -> Unit,
- title: String?,
- presenter: MigrateMangaPresenter,
- onClickItem: (Manga) -> Unit,
- onClickCover: (Manga) -> Unit,
- ) {
- val context = LocalContext.current
- Scaffold(
- topBar = { scrollBehavior ->
- AppBar(
- title = title,
- navigateUp = navigateUp,
- scrollBehavior = scrollBehavior,
- )
- },
- ) { contentPadding ->
- when {
- presenter.isLoading -> LoadingScreen()
- presenter.isEmpty -> EmptyScreen(textResource = R.string.empty_screen)
- else -> {
- MigrateMangaContent(
- contentPadding = contentPadding,
- state = presenter,
- onClickItem = onClickItem,
- onClickCover = onClickCover,
- )
- }
- }
- }
- LaunchedEffect(Unit) {
- presenter.events.collectLatest { event ->
- when (event) {
- Event.FailedFetchingFavorites -> {
- context.toast(R.string.internal_error)
- }
- }
- }
- }
- }
- @Composable
- private fun MigrateMangaContent(
- contentPadding: PaddingValues,
- state: MigrateMangaState,
- onClickItem: (Manga) -> Unit,
- onClickCover: (Manga) -> Unit,
- ) {
- ScrollbarLazyColumn(
- contentPadding = contentPadding,
- ) {
- items(state.items) { manga ->
- MigrateMangaItem(
- manga = manga,
- onClickItem = onClickItem,
- onClickCover = onClickCover,
- )
- }
- }
- }
- @Composable
- private fun MigrateMangaItem(
- modifier: Modifier = Modifier,
- manga: Manga,
- onClickItem: (Manga) -> Unit,
- onClickCover: (Manga) -> Unit,
- ) {
- BaseMangaListItem(
- modifier = modifier,
- manga = manga,
- onClickItem = { onClickItem(manga) },
- onClickCover = { onClickCover(manga) },
- )
- }
|