mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-08 04:32:43 -05:00
add some compose caching
This commit is contained in:
@@ -12,15 +12,17 @@ import androidx.paging.compose.LazyPagingItems
|
||||
|
||||
fun <T: Any> LazyGridScope.lazyPagingItems(
|
||||
lazyPagingItems: LazyPagingItems<T>,
|
||||
key: ((index: Int) -> Any)? = null,
|
||||
itemContent: @Composable LazyGridItemScope.(value: T?) -> Unit
|
||||
) {
|
||||
items(lazyPagingItems.itemCount) { index ->
|
||||
items(lazyPagingItems.itemCount, key = key) { index ->
|
||||
itemContent(lazyPagingItems[index])
|
||||
}
|
||||
}
|
||||
|
||||
fun <T: Any> LazyGridScope.listItems(
|
||||
items: List<T>,
|
||||
key: (T?) -> Any,
|
||||
itemContent: @Composable (value: T) -> Unit
|
||||
) {
|
||||
items(items.size) { index ->
|
||||
@@ -41,6 +43,7 @@ fun LazyGridScope.header(
|
||||
|
||||
fun <T: Any> LazyListScope.listItems(
|
||||
items: Collection<T>,
|
||||
key: (T?) -> Any,
|
||||
itemContent: @Composable (value: T) -> Unit
|
||||
) {
|
||||
items(items.size) { index ->
|
||||
@@ -60,6 +63,7 @@ fun <T: Any?> LazyListScope.listItems(
|
||||
|
||||
fun <T: Any> LazyListScope.lazyPagingItems(
|
||||
lazyPagingItems: LazyPagingItems<T>,
|
||||
key: ((index: Int) -> Any)? = null,
|
||||
itemContent: @Composable LazyItemScope.(value: T?) -> Unit
|
||||
) {
|
||||
items(lazyPagingItems.itemCount) { index ->
|
||||
|
||||
@@ -66,7 +66,10 @@ fun PagingPosterGrid(
|
||||
contentPadding = PaddingValues(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
) {
|
||||
lazyPagingItems(lazyPagingItems) { item ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = lazyPagingItems,
|
||||
key = { i -> it[i]!!.id }
|
||||
) { item ->
|
||||
item?.let {
|
||||
PosterItem(
|
||||
modifier = Modifier.padding(5.dp),
|
||||
@@ -102,7 +105,10 @@ fun PagingPeoplePosterGrid(
|
||||
header()
|
||||
}
|
||||
|
||||
lazyPagingItems(lazyPagingItems) { person ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = lazyPagingItems,
|
||||
key = { i -> it[i]!!.id }
|
||||
) { person ->
|
||||
person?.let {
|
||||
PosterItem(
|
||||
url = TmdbUtils.getFullPersonImagePath(person.profilePath),
|
||||
|
||||
@@ -170,7 +170,10 @@ private fun MovieResultsView(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
handleLoadState(context, pagingItems.loadState.refresh)
|
||||
lazyPagingItems(pagingItems) { item ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = pagingItems,
|
||||
key = { i -> pagingItems[i]!!.id }
|
||||
) { item ->
|
||||
item?.let {
|
||||
MovieSearchResultView(
|
||||
appNavController = appNavController,
|
||||
@@ -213,7 +216,10 @@ private fun TvResultsView(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
handleLoadState(context, pagingItems.loadState.refresh)
|
||||
lazyPagingItems(pagingItems) { item ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = pagingItems,
|
||||
key = { i -> pagingItems[i]!!.id }
|
||||
) { item ->
|
||||
item?.let {
|
||||
TvSearchResultView(
|
||||
appNavController = appNavController,
|
||||
@@ -256,7 +262,10 @@ private fun PeopleResultsView(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
handleLoadState(context, pagingItems.loadState.refresh)
|
||||
lazyPagingItems(pagingItems) { item ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = pagingItems,
|
||||
key = { i -> pagingItems[i]!!.id }
|
||||
) { item ->
|
||||
item?.let {
|
||||
PeopleSearchResultView(
|
||||
appNavController = appNavController,
|
||||
@@ -299,7 +308,10 @@ private fun MultiResultsView(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
handleLoadState(context, pagingItems.loadState.refresh)
|
||||
lazyPagingItems(pagingItems) { item ->
|
||||
lazyPagingItems(
|
||||
lazyPagingItems = pagingItems,
|
||||
key = { i -> pagingItems[i]!!.id }
|
||||
) { item ->
|
||||
item?.let {
|
||||
when (item.mediaType) {
|
||||
MediaViewType.MOVIE -> {
|
||||
|
||||
Reference in New Issue
Block a user