2022-08-31 20:41:35 +02:00
|
|
|
package eu.kanade.presentation.browse
|
|
|
|
|
2022-09-03 16:16:30 +02:00
|
|
|
import androidx.compose.material3.SnackbarHost
|
|
|
|
import androidx.compose.material3.SnackbarHostState
|
2022-08-31 20:41:35 +02:00
|
|
|
import androidx.compose.runtime.Composable
|
2022-09-03 16:16:30 +02:00
|
|
|
import androidx.compose.runtime.getValue
|
|
|
|
import androidx.compose.runtime.remember
|
|
|
|
import androidx.compose.ui.platform.LocalUriHandler
|
|
|
|
import androidx.paging.compose.collectAsLazyPagingItems
|
2022-08-31 20:41:35 +02:00
|
|
|
import eu.kanade.domain.manga.model.Manga
|
2022-09-03 16:16:30 +02:00
|
|
|
import eu.kanade.presentation.browse.components.BrowseSourceSearchToolbar
|
|
|
|
import eu.kanade.presentation.components.Scaffold
|
|
|
|
import eu.kanade.tachiyomi.source.LocalSource
|
2022-08-31 20:41:35 +02:00
|
|
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter
|
2022-09-03 16:16:30 +02:00
|
|
|
import eu.kanade.tachiyomi.ui.more.MoreController
|
2022-08-31 20:41:35 +02:00
|
|
|
|
|
|
|
@Composable
|
|
|
|
fun SourceSearchScreen(
|
|
|
|
presenter: BrowseSourcePresenter,
|
|
|
|
navigateUp: () -> Unit,
|
|
|
|
onFabClick: () -> Unit,
|
2022-09-03 16:16:30 +02:00
|
|
|
onMangaClick: (Manga) -> Unit,
|
|
|
|
onWebViewClick: () -> Unit,
|
2022-08-31 20:41:35 +02:00
|
|
|
) {
|
2022-09-03 16:16:30 +02:00
|
|
|
val columns by presenter.getColumnsPreferenceForCurrentOrientation()
|
2022-08-31 22:47:07 +02:00
|
|
|
|
2022-09-03 16:16:30 +02:00
|
|
|
val mangaList = presenter.getMangaList().collectAsLazyPagingItems()
|
|
|
|
|
|
|
|
val snackbarHostState = remember { SnackbarHostState() }
|
|
|
|
|
|
|
|
val uriHandler = LocalUriHandler.current
|
|
|
|
|
|
|
|
val onHelpClick = {
|
|
|
|
uriHandler.openUri(LocalSource.HELP_URL)
|
|
|
|
}
|
|
|
|
|
|
|
|
Scaffold(
|
|
|
|
topBar = { scrollBehavior ->
|
|
|
|
BrowseSourceSearchToolbar(
|
|
|
|
searchQuery = presenter.searchQuery ?: "",
|
|
|
|
onSearchQueryChanged = { presenter.searchQuery = it },
|
|
|
|
navigateUp = navigateUp,
|
|
|
|
onResetClick = { presenter.searchQuery = "" },
|
|
|
|
onSearchClick = { presenter.search() },
|
|
|
|
scrollBehavior = scrollBehavior,
|
|
|
|
)
|
|
|
|
},
|
|
|
|
floatingActionButton = {
|
|
|
|
BrowseSourceFloatingActionButton(
|
|
|
|
isVisible = presenter.filters.isNotEmpty(),
|
|
|
|
onFabClick = onFabClick,
|
|
|
|
)
|
|
|
|
},
|
|
|
|
snackbarHost = {
|
|
|
|
SnackbarHost(hostState = snackbarHostState)
|
2022-08-31 22:47:07 +02:00
|
|
|
},
|
2022-09-03 16:16:30 +02:00
|
|
|
) { paddingValues ->
|
|
|
|
BrowseSourceContent(
|
|
|
|
state = presenter,
|
|
|
|
mangaList = mangaList,
|
|
|
|
getMangaState = { presenter.getManga(it) },
|
|
|
|
columns = columns,
|
|
|
|
displayMode = presenter.displayMode,
|
|
|
|
snackbarHostState = snackbarHostState,
|
|
|
|
contentPadding = paddingValues,
|
|
|
|
onWebViewClick = onWebViewClick,
|
|
|
|
onHelpClick = { uriHandler.openUri(MoreController.URL_HELP) },
|
|
|
|
onLocalSourceHelpClick = onHelpClick,
|
|
|
|
onMangaClick = onMangaClick,
|
|
|
|
onMangaLongClick = onMangaClick,
|
|
|
|
)
|
|
|
|
}
|
2022-08-31 20:41:35 +02:00
|
|
|
}
|