diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyListItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyListItem.kt deleted file mode 100644 index b37a82bc..00000000 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/LazyListItem.kt +++ /dev/null @@ -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 LazyListScope.customItems( - items: List, - key: (T) -> Any?, - content: @Composable LazyItemScope.(T) -> Unit -) { - for (it in items) { - item(key = key(it)) { - content(it) - } - } -} - -fun LazyListScope.customItemsIndexed( - items: List, - 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 LazyGridScope.customItems( - items: List, - key: (T) -> Any?, - content: @Composable LazyGridItemScope.(T) -> Unit -) { - for (it in items) { - item(key = key(it)) { - content(it) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadges.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadges.kt index 965865f4..d8e92796 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadges.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/components/badges/AboutBadges.kt @@ -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" -> { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt index 3e0d6e39..0ade3bf4 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/credits/CreditsScreen.kt @@ -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( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt index 8df10a14..6e5ac06d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/license_info/LicenseInfoScreen.kt @@ -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 -> diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt index 94553d03..15fffae2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/about/nested/licenses/LicensesScreen.kt @@ -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)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt index 8c8894d1..28b39480 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/book_info/components/dialog/BookInfoMoveDialog.kt @@ -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) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt index 127a8a05..829f7cb9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/adding_dialog/BrowseAddingDialog.kt @@ -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 ) { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt index a90d3551..a21d8d0c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/grid/BrowseGridLayout.kt @@ -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 -> diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListLayout.kt index 50eab3f5..fd9983b2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/layout/list/BrowseListLayout.kt @@ -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 -> diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt index c532120b..8517c5f7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/browse/components/top_bar/BrowseTopBarDirectoryPath.kt @@ -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)) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt index c8cadfb9..87235c82 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt @@ -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 diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt index 4bc21860..fbd59980 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/history/HistoryScreen.kt @@ -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(), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt index 46e6bb31..058022a7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/LibraryScreen.kt @@ -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( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt index 51d36611..c916e4c7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/library/components/dialog/LibraryMoveDialog.kt @@ -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) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt index 4f1bba92..6701d67e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt @@ -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. diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt index 8859f181..731c0bf6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderChaptersDrawer.kt @@ -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 } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt index f3ab9608..509e3fa7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ColorPresetSetting.kt @@ -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, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt index 9b2a9647..6a54147a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/appearance/components/settings/ThemeSetting.kt @@ -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)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilterSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilterSetting.kt index 8b0803f2..860e45f2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilterSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseFilterSetting.kt @@ -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 diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseSortOrderSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseSortOrderSetting.kt index 060831a6..e825bf6f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseSortOrderSetting.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/browse/components/settings/BrowseSortOrderSetting.kt @@ -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 diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt index 3b6841ec..99a513ec 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartLanguageScreen.kt @@ -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,