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