🛠️ Remove customItems()
* Removed and replaced customItems() with default items()
This commit is contained in:
parent
dcd2e2e69e
commit
272d44d70d
21 changed files with 59 additions and 87 deletions
|
|
@ -1,43 +0,0 @@
|
|||
package ua.acclorite.book_story.presentation.core.components
|
||||
|
||||
import androidx.compose.foundation.lazy.LazyItemScope
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.foundation.lazy.grid.LazyGridItemScope
|
||||
import androidx.compose.foundation.lazy.grid.LazyGridScope
|
||||
import androidx.compose.runtime.Composable
|
||||
|
||||
fun <T> LazyListScope.customItems(
|
||||
items: List<T>,
|
||||
key: (T) -> Any?,
|
||||
content: @Composable LazyItemScope.(T) -> Unit
|
||||
) {
|
||||
for (it in items) {
|
||||
item(key = key(it)) {
|
||||
content(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> LazyListScope.customItemsIndexed(
|
||||
items: List<T>,
|
||||
key: (T, Int) -> Any?,
|
||||
content: @Composable LazyItemScope.(Int, T) -> Unit
|
||||
) {
|
||||
for ((index, item) in items.withIndex()) {
|
||||
item(key = key(item, index)) {
|
||||
content(index, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> LazyGridScope.customItems(
|
||||
items: List<T>,
|
||||
key: (T) -> Any?,
|
||||
content: @Composable LazyGridItemScope.(T) -> Unit
|
||||
) {
|
||||
for (it in items) {
|
||||
item(key = key(it)) {
|
||||
content(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Box
|
|||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
@ -13,7 +14,6 @@ import androidx.compose.ui.unit.Dp
|
|||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalAboutViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
||||
|
|
@ -39,7 +39,7 @@ fun AboutBadges(verticalPadding: Dp = 18.dp) {
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.spacedBy(13.dp)
|
||||
) {
|
||||
customItems(Constants.ABOUT_BADGES, key = { it.id }) { badge ->
|
||||
items(Constants.ABOUT_BADGES, key = { it.id }) { badge ->
|
||||
AboutBadgeItem(badge = badge) {
|
||||
when (badge.id) {
|
||||
"tryzub" -> {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.LargeTopAppBar
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -21,7 +22,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
|||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalAboutViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
|
|
@ -70,7 +70,7 @@ private fun CreditsScreen() {
|
|||
.padding(top = paddingValues.calculateTopPadding()),
|
||||
state = scrollState.second
|
||||
) {
|
||||
customItems(Constants.CREDITS, key = { it.name }) {
|
||||
items(Constants.CREDITS, key = { it.name }) {
|
||||
CreditItem(credit = it) {
|
||||
it.website?.let { website ->
|
||||
onEvent(
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Language
|
||||
|
|
@ -37,7 +38,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
|||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLicenseInfoViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
|
|
@ -147,7 +147,7 @@ private fun LicenseInfoScreen() {
|
|||
Spacer(modifier = Modifier.height(12.dp))
|
||||
}
|
||||
|
||||
customItems(
|
||||
items(
|
||||
licenses ?: emptyList(),
|
||||
key = { it.name }
|
||||
) { license ->
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.LargeTopAppBar
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -29,7 +30,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
|||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLicensesViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||
import ua.acclorite.book_story.presentation.screens.about.nested.licenses.components.LicenseItem
|
||||
|
|
@ -93,7 +93,7 @@ private fun LicensesScreen() {
|
|||
Spacer(modifier = Modifier.height(12.dp))
|
||||
}
|
||||
|
||||
customItems(state.value.licenses, key = { it.uniqueId }) {
|
||||
items(state.value.licenses, key = { it.uniqueId }) {
|
||||
LicenseItem(library = it) {
|
||||
onNavigate {
|
||||
navigate(Screen.About.LicenseInfo(it.uniqueId))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ua.acclorite.book_story.presentation.screens.book_info.components.dialog
|
||||
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
||||
import androidx.compose.runtime.Composable
|
||||
|
|
@ -12,7 +13,6 @@ import ua.acclorite.book_story.domain.model.Category
|
|||
import ua.acclorite.book_story.presentation.core.components.LocalBookInfoViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
|
|
@ -70,7 +70,7 @@ fun BookInfoMoveDialog() {
|
|||
},
|
||||
withDivider = false,
|
||||
items = {
|
||||
customItems(categories, key = { it.name }) {
|
||||
items(categories, key = { it.name }) {
|
||||
val category = when (it) {
|
||||
Category.READING -> stringResource(id = R.string.reading_tab)
|
||||
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Box
|
|||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.AddChart
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
|
|
@ -19,12 +20,12 @@ import ua.acclorite.book_story.R
|
|||
import ua.acclorite.book_story.domain.model.NullableBook
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
||||
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
|
||||
import java.util.UUID
|
||||
|
||||
/**
|
||||
* Adding dialog.
|
||||
|
|
@ -84,7 +85,10 @@ fun BrowseAddingDialog() {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
customItems(state.value.selectedBooks, key = { it.first.fileName }) { book ->
|
||||
items(
|
||||
state.value.selectedBooks,
|
||||
key = { it.first.fileName ?: UUID.randomUUID() }
|
||||
) { book ->
|
||||
BrowseAddingDialogItem(
|
||||
result = book
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.lazy.grid.GridCells
|
||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||
import androidx.compose.foundation.lazy.grid.items
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.domain.model.SelectableFile
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.header
|
||||
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
||||
|
|
@ -39,7 +39,7 @@ fun BrowseGridLayout(
|
|||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
customItems(
|
||||
items(
|
||||
filteredFiles,
|
||||
key = { it.fileOrDirectory.path }
|
||||
) { selectableFile ->
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ import androidx.compose.foundation.layout.Spacer
|
|||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.domain.model.SelectableFile
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ fun BrowseListLayout(
|
|||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
customItems(
|
||||
items(
|
||||
filteredFiles,
|
||||
key = { it.fileOrDirectory.path }
|
||||
) { selectableFile ->
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowRight
|
||||
|
|
@ -28,7 +29,6 @@ import ua.acclorite.book_story.R
|
|||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
||||
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
|
||||
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure
|
||||
|
|
@ -99,7 +99,10 @@ fun BrowseTopBarDirectoryPath() {
|
|||
state = listState,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
customItemsIndexed(directories, key = { _, index -> index }) { index, directory ->
|
||||
itemsIndexed(
|
||||
directories,
|
||||
key = { index, _ -> index }
|
||||
) { index, directory ->
|
||||
if (index == 0) {
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.navigationBars
|
|||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.RestartAlt
|
||||
|
|
@ -27,6 +28,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.domain.util.Position
|
||||
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
||||
import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
||||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||
|
|
@ -35,7 +37,6 @@ import ua.acclorite.book_story.presentation.core.components.LocalHelpViewModel
|
|||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalStartViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||
|
|
@ -151,7 +152,10 @@ private fun HelpScreen() {
|
|||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
customItems(Constants.HELP_TIPS, key = { it.title }) { helpTip ->
|
||||
itemsIndexed(
|
||||
Constants.HELP_TIPS,
|
||||
key = { _, helpTip -> helpTip.title }
|
||||
) { index, helpTip ->
|
||||
HelpItem(
|
||||
helpTip = helpTip,
|
||||
fromStart = state.value.fromStart
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
|
|
@ -44,7 +45,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomSearchTextFiel
|
|||
import ua.acclorite.book_story.presentation.core.components.CustomSnackbar
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton
|
||||
|
|
@ -212,8 +212,9 @@ private fun HistoryScreen() {
|
|||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
customItems(
|
||||
groupedHistory.history, key = { it.id }
|
||||
items(
|
||||
groupedHistory.history,
|
||||
key = { it.id }
|
||||
) {
|
||||
HistoryItem(
|
||||
modifier = Modifier.animateItem(),
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.grid.GridCells
|
||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||
import androidx.compose.foundation.lazy.grid.items
|
||||
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
|
||||
import androidx.compose.foundation.pager.HorizontalPager
|
||||
import androidx.compose.foundation.pager.PagerState
|
||||
|
|
@ -48,7 +49,6 @@ import ua.acclorite.book_story.domain.util.Selected
|
|||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.header
|
||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
|
|
@ -162,7 +162,10 @@ private fun LibraryScreen(
|
|||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
customItems(books, key = { it.first.id }) {
|
||||
items(
|
||||
books,
|
||||
key = { it.first.id }
|
||||
) {
|
||||
LibraryBookItem(
|
||||
book = it,
|
||||
modifier = Modifier.animateItem(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ua.acclorite.book_story.presentation.screens.library.components.dialog
|
||||
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.pager.PagerState
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
||||
|
|
@ -10,7 +11,6 @@ import ua.acclorite.book_story.R
|
|||
import ua.acclorite.book_story.domain.model.Category
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
|
|
@ -51,7 +51,7 @@ fun LibraryMoveDialog(pagerState: PagerState) {
|
|||
},
|
||||
withDivider = false,
|
||||
items = {
|
||||
customItems(state.value.categories, key = { it.name }) {
|
||||
items(state.value.categories, key = { it.name }) {
|
||||
val category = when (it) {
|
||||
Category.READING -> stringResource(id = R.string.reading_tab)
|
||||
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.size
|
|||
import androidx.compose.foundation.layout.systemBarsIgnoringVisibility
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
|
|
@ -65,7 +66,6 @@ import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewMode
|
|||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsError
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||
|
|
@ -482,8 +482,8 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
|||
.coerceAtLeast(18.dp),
|
||||
)
|
||||
) {
|
||||
customItemsIndexed(
|
||||
state.value.text, key = { _, index -> index }
|
||||
itemsIndexed(
|
||||
state.value.text, key = { index, _ -> index }
|
||||
) { index, line ->
|
||||
ReaderChapter(
|
||||
chapter = chapters[index], // Shows only when matching startIndex of chapter.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ua.acclorite.book_story.presentation.screens.reader.components
|
|||
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
|
|
@ -13,7 +14,6 @@ import ua.acclorite.book_story.R
|
|||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawer
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerSelectableItem
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerTitleItem
|
||||
|
|
@ -43,7 +43,7 @@ fun ReaderChaptersDrawer() {
|
|||
)
|
||||
}
|
||||
) {
|
||||
customItems(state.value.book.chapters, key = { it.index }) { chapter ->
|
||||
items(state.value.book.chapters, key = { it.index }) { chapter ->
|
||||
val selected = rememberSaveable(state.value.currentChapter) {
|
||||
chapter.index == state.value.currentChapter?.index
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.text.BasicTextField
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
|
|
@ -63,7 +64,6 @@ import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
|||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
||||
import ua.acclorite.book_story.presentation.screens.settings.components.ColorPickerWithTitle
|
||||
import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent
|
||||
import ua.acclorite.book_story.presentation.ui.FadeTransitionPreservingSpace
|
||||
|
|
@ -107,9 +107,9 @@ fun ColorPresetSetting(
|
|||
state = state.value.colorPresetsListState,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
customItemsIndexed(
|
||||
itemsIndexed(
|
||||
state.value.colorPresets,
|
||||
key = { item, _ -> item.id }
|
||||
key = { _, colorPreset -> colorPreset.id }
|
||||
) { index, colorPreset ->
|
||||
ReorderableItem(
|
||||
state = reorderableListState,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
|
|
@ -41,7 +42,6 @@ import ua.acclorite.book_story.domain.util.UIText
|
|||
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||
import ua.acclorite.book_story.presentation.ui.Theme
|
||||
|
|
@ -81,9 +81,9 @@ fun ThemeSetting(
|
|||
Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
customItemsIndexed(
|
||||
itemsIndexed(
|
||||
themes,
|
||||
key = { item, _ -> item.first.name }
|
||||
key = { _, themeEntry -> themeEntry.first.name }
|
||||
) { index, themeEntry ->
|
||||
if (index == 0) {
|
||||
Spacer(modifier = Modifier.width(horizontalPadding))
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.Checkbox
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
|
|
@ -18,7 +19,6 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ import ua.acclorite.book_story.presentation.data.MainEvent
|
|||
* Lets user choose which items to filter in Browse.
|
||||
*/
|
||||
fun LazyListScope.BrowseFilterSetting() {
|
||||
customItems(Constants.EXTENSIONS, key = { it }) {
|
||||
items(Constants.EXTENSIONS, key = { it }) {
|
||||
val state = LocalMainViewModel.current.state
|
||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.ArrowDownward
|
||||
import androidx.compose.material.icons.filled.ArrowUpward
|
||||
|
|
@ -25,7 +26,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseSortOrder
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.
|
|||
* Lets user choose how to sort files in Browse.
|
||||
*/
|
||||
fun LazyListScope.BrowseSortOrderSetting() {
|
||||
customItems(BrowseSortOrder.entries, key = { it.name }) {
|
||||
items(BrowseSortOrder.entries, key = { it.name }) {
|
||||
val state = LocalMainViewModel.current.state
|
||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ua.acclorite.book_story.presentation.screens.start.components
|
|||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.lazy.LazyListScope
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
|
|
@ -10,7 +11,6 @@ import androidx.compose.ui.unit.dp
|
|||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.domain.model.ButtonItem
|
||||
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ fun LazyListScope.startLanguageScreen(
|
|||
Spacer(modifier = Modifier.height(12.dp))
|
||||
}
|
||||
|
||||
customItems(languages, key = { it.id }) {
|
||||
items(languages, key = { it.id }) {
|
||||
SelectableDialogItem(
|
||||
selected = it.selected,
|
||||
title = it.title,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue