From e0e4b739f97ff23a570e6c6730911ef3d3fae0d7 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 8 Sep 2024 21:27:55 +0800 Subject: [PATCH] Add key and contentType for gallery detail --- .../ehviewer/ui/screen/GalleryDetailScreen.kt | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt index ea6121e61..a1e5975c6 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt @@ -374,14 +374,18 @@ fun AnimatedVisibilityScope.GalleryDetailScreen(args: GalleryDetailScreenArgs, n fun LazyGridScope.galleryDetailPreview(gd: GalleryDetail) { val previewList = gd.previewList - items(previewList) { + items(previewList, key = { it.position }, contentType = { "preview" }) { EhPreviewItem( galleryPreview = it, position = it.position, onClick = { navToReader(gd.galleryInfo, it.position) }, ) } - item(span = { GridItemSpan(maxLineSpan) }) { + item( + key = "footer", + span = { GridItemSpan(maxLineSpan) }, + contentType = "footer", + ) { val footerText = if (gd.previewPages <= 0 || previewList.isEmpty()) { stringResource(R.string.no_previews) } else if (gd.previewPages == 1) { @@ -842,7 +846,11 @@ fun AnimatedVisibilityScope.GalleryDetailScreen(args: GalleryDetailScreenArgs, n horizontalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding)), verticalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding_v)), ) { - item(span = { GridItemSpan(maxCurrentLineSpan) }) { + item( + key = "header", + span = { GridItemSpan(maxCurrentLineSpan) }, + contentType = "header", + ) { GalleryDetailHeaderCard( info = galleryInfo, onInfoCardClick = ::onGalleryInfoCardClick, @@ -852,7 +860,11 @@ fun AnimatedVisibilityScope.GalleryDetailScreen(args: GalleryDetailScreenArgs, n modifier = Modifier.fillMaxWidth().padding(vertical = keylineMargin), ) } - item(span = { GridItemSpan(maxCurrentLineSpan) }) { + item( + key = "body", + span = { GridItemSpan(maxCurrentLineSpan) }, + contentType = "body", + ) { LocalPinnableContainer.current!!.run { remember { pin() } } Column { Row { @@ -895,7 +907,11 @@ fun AnimatedVisibilityScope.GalleryDetailScreen(args: GalleryDetailScreenArgs, n horizontalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding)), verticalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding_v)), ) { - item(span = { GridItemSpan(maxCurrentLineSpan) }) { + item( + key = "header", + span = { GridItemSpan(maxCurrentLineSpan) }, + contentType = "header", + ) { Row(modifier = Modifier.fillMaxWidth()) { GalleryDetailHeaderCard( info = galleryInfo, @@ -926,7 +942,11 @@ fun AnimatedVisibilityScope.GalleryDetailScreen(args: GalleryDetailScreenArgs, n } } } - item(span = { GridItemSpan(maxCurrentLineSpan) }) { + item( + key = "body", + span = { GridItemSpan(maxCurrentLineSpan) }, + contentType = "body", + ) { LocalPinnableContainer.current!!.run { remember { pin() } } Column { if (getDetailError.isNotBlank()) {