mirror of
https://github.com/null2264/yokai.git
synced 2025-06-20 18:24:42 +00:00
chore(library/compose): LibraryItem data classes
This commit is contained in:
parent
ad22250265
commit
f01ace94be
5 changed files with 49 additions and 22 deletions
|
@ -11,6 +11,7 @@ import androidx.core.view.isVisible
|
|||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
|
||||
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
||||
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||
import eu.kanade.tachiyomi.ui.main.BottomSheetController
|
||||
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface
|
||||
import eu.kanade.tachiyomi.ui.main.RootSearchInterface
|
||||
|
@ -37,9 +38,11 @@ class LibraryComposeController(
|
|||
}
|
||||
|
||||
override fun getSearchTitle(): String? {
|
||||
val searchSuggestion by lazy { preferences.librarySearchSuggestion().get() }
|
||||
|
||||
return searchTitle(
|
||||
if (preferences.showLibrarySearchSuggestions().get() && preferences.librarySearchSuggestion().get().isNotBlank()) {
|
||||
"\"${preferences.librarySearchSuggestion().get()}\""
|
||||
if (preferences.showLibrarySearchSuggestions().get() && searchSuggestion.isNotBlank()) {
|
||||
"\"$searchSuggestion\""
|
||||
} else {
|
||||
view?.context?.getString(MR.strings.your_library)?.lowercase(Locale.ROOT)
|
||||
},
|
||||
|
@ -52,8 +55,10 @@ class LibraryComposeController(
|
|||
|
||||
override fun onViewCreated(view: View) {
|
||||
super.onViewCreated(view)
|
||||
|
||||
binding.composeView.isVisible = true
|
||||
binding.swipeRefresh.isGone = true
|
||||
binding.fastScroller.isGone = true
|
||||
|
||||
binding.composeView.setContent {
|
||||
YokaiTheme {
|
||||
|
@ -66,6 +71,10 @@ class LibraryComposeController(
|
|||
fun ScreenContent() {
|
||||
val state by presenter.state.collectAsState()
|
||||
LibraryContent(
|
||||
items = listOf(
|
||||
LibraryItem.Blank(69),
|
||||
LibraryItem.Blank(420),
|
||||
),
|
||||
columns = 3,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
package eu.kanade.tachiyomi.ui.library.compose
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.models.Category
|
||||
import eu.kanade.tachiyomi.ui.base.presenter.StateCoroutinePresenter
|
||||
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||
|
||||
typealias LibraryMap = Map<Category, List<LibraryItem>>
|
||||
|
||||
class LibraryComposePresenter :
|
||||
StateCoroutinePresenter<LibraryComposePresenter.State, LibraryComposeController>(State.Loading) {
|
||||
StateCoroutinePresenter<LibraryComposePresenter.State, LibraryComposeController>(State()) {
|
||||
|
||||
sealed interface State {
|
||||
data object Loading : State
|
||||
}
|
||||
data class State(
|
||||
var isLoading: Boolean = true,
|
||||
var library: LibraryMap = emptyMap()
|
||||
)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package eu.kanade.tachiyomi.ui.library.models
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||
|
||||
sealed interface LibraryItem {
|
||||
data class Blank(val mangaCount: Int = 0) : LibraryItem
|
||||
data class Hidden(val title: String, val hiddenItems: List<LibraryItem>) : LibraryItem
|
||||
data class Manga(
|
||||
val libraryManga: LibraryManga,
|
||||
val isLocal: Boolean = false,
|
||||
val downloadCount: Long = -1,
|
||||
val unreadCount: Long = -1,
|
||||
val language: String = "",
|
||||
) : LibraryItem
|
||||
}
|
|
@ -3,15 +3,16 @@ package yokai.presentation.library
|
|||
import androidx.compose.foundation.lazy.grid.items
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||
import yokai.presentation.AppBarType
|
||||
import yokai.presentation.YokaiScaffold
|
||||
import yokai.presentation.library.components.LazyLibraryGrid
|
||||
|
||||
@Composable
|
||||
fun LibraryContent(
|
||||
items: List<LibraryItem>,
|
||||
columns: Int,
|
||||
) {
|
||||
val items = (0..100).toList()
|
||||
YokaiScaffold(
|
||||
onNavigationIconClicked = {},
|
||||
appBarType = AppBarType.NONE,
|
||||
|
@ -23,8 +24,18 @@ fun LibraryContent(
|
|||
items(
|
||||
items = items,
|
||||
contentType = { "library_grid_item" }
|
||||
) {
|
||||
Text("Hello world! ($it)")
|
||||
) { item ->
|
||||
when (item) {
|
||||
is LibraryItem.Blank -> {
|
||||
Text("Blank: ${item.mangaCount}")
|
||||
}
|
||||
is LibraryItem.Hidden -> {
|
||||
Text("Hidden: ${item.title} - ${item.hiddenItems.size}")
|
||||
}
|
||||
is LibraryItem.Manga -> {
|
||||
Text("Manga: ${item.libraryManga.manga.title}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
package yokai.presentation.library
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import yokai.util.Screen
|
||||
|
||||
class LibraryScreen : Screen() {
|
||||
@Composable
|
||||
override fun Content() {
|
||||
LibraryContent(
|
||||
columns = 3, // FIXME: Retrieve from preferences
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue