chore(library/compose): LibraryItem data classes

This commit is contained in:
Ahmad Ansori Palembani 2025-01-08 05:54:27 +07:00
parent ad22250265
commit f01ace94be
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
5 changed files with 49 additions and 22 deletions

View file

@ -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,
)
}

View file

@ -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()
)
}

View file

@ -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
}

View file

@ -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}")
}
}
}
}
}

View file

@ -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
)
}
}