Simplifies the Gallery stack

This commit is contained in:
Vitor Pamplona
2024-12-06 13:41:03 -05:00
parent 0d6760360f
commit 01b880c4a5
3 changed files with 16 additions and 33 deletions

View File

@@ -28,8 +28,6 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.annotation.OptIn import androidx.annotation.OptIn
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -752,26 +750,23 @@ private fun RenderVideoPlayer(
modifier = videoModifier, modifier = videoModifier,
factory = { context: Context -> factory = { context: Context ->
PlayerView(context).apply { PlayerView(context).apply {
clipToOutline = true
player = controller player = controller
layoutParams =
FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
)
setShowBuffering(PlayerView.SHOW_BUFFERING_ALWAYS) setShowBuffering(PlayerView.SHOW_BUFFERING_ALWAYS)
setBackgroundColor(Color.Transparent.toArgb()) setBackgroundColor(Color.Transparent.toArgb())
setShutterBackgroundColor(Color.Transparent.toArgb()) setShutterBackgroundColor(Color.Transparent.toArgb())
controllerAutoShow = false controllerAutoShow = false
useController = showControls useController = showControls
thumbData?.thumb?.let { defaultArtwork = it } thumbData?.thumb?.let { defaultArtwork = it }
hideController() hideController()
resizeMode = resizeMode =
if (isFiniteHeight) { if (isFiniteHeight) {
AspectRatioFrameLayout.RESIZE_MODE_FIT AspectRatioFrameLayout.RESIZE_MODE_FIT
} else { } else {
AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH
} }
if (showControls) { if (showControls) {
onDialog?.let { innerOnDialog -> onDialog?.let { innerOnDialog ->
setFullscreenButtonClickListener { setFullscreenButtonClickListener {

View File

@@ -207,18 +207,13 @@ fun ZoomableContentView(
@Composable @Composable
fun GalleryContentView( fun GalleryContentView(
content: BaseMediaContent, content: BaseMediaContent,
roundedCorner: Boolean,
isFiniteHeight: Boolean,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
) { ) {
when (content) { when (content) {
is MediaUrlImage -> is MediaUrlImage ->
SensitivityWarning(content.contentWarning != null, accountViewModel) { SensitivityWarning(content.contentWarning != null, accountViewModel) {
TwoSecondController(content) { controllerVisible -> TwoSecondController(content) { controllerVisible ->
val mainImageModifier = Modifier.fillMaxWidth() UrlImageView(content, ContentScale.Crop, Modifier.fillMaxSize(), Modifier.fillMaxSize(), controllerVisible, accountViewModel = accountViewModel)
val loadedImageModifier = if (roundedCorner) MaterialTheme.colorScheme.imageModifier else Modifier.fillMaxWidth()
UrlImageView(content, ContentScale.Crop, mainImageModifier, loadedImageModifier, controllerVisible, accountViewModel = accountViewModel)
} }
} }
is MediaUrlVideo -> is MediaUrlVideo ->
@@ -233,7 +228,7 @@ fun GalleryContentView(
authorName = content.authorName, authorName = content.authorName,
dimensions = Dimension(1, 1), // fit video in 1:1 ratio dimensions = Dimension(1, 1), // fit video in 1:1 ratio
blurhash = content.blurhash, blurhash = content.blurhash,
isFiniteHeight = isFiniteHeight, isFiniteHeight = false,
nostrUriCallback = content.uri, nostrUriCallback = content.uri,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
alwaysShowVideo = true, alwaysShowVideo = true,
@@ -243,10 +238,7 @@ fun GalleryContentView(
} }
is MediaLocalImage -> is MediaLocalImage ->
TwoSecondController(content) { controllerVisible -> TwoSecondController(content) { controllerVisible ->
val mainImageModifier = Modifier.fillMaxWidth() LocalImageView(content, ContentScale.Crop, Modifier.fillMaxSize(), Modifier.fillMaxSize(), controllerVisible, accountViewModel = accountViewModel)
val loadedImageModifier = if (roundedCorner) MaterialTheme.colorScheme.imageModifier else Modifier.fillMaxWidth()
LocalImageView(content, ContentScale.Crop, mainImageModifier, loadedImageModifier, controllerVisible, accountViewModel = accountViewModel)
} }
is MediaLocalVideo -> is MediaLocalVideo ->
content.localFile?.let { content.localFile?.let {
@@ -258,7 +250,7 @@ fun GalleryContentView(
artworkUri = content.artworkUri, artworkUri = content.artworkUri,
authorName = content.authorName, authorName = content.authorName,
borderModifier = MaterialTheme.colorScheme.videoGalleryModifier, borderModifier = MaterialTheme.colorScheme.videoGalleryModifier,
isFiniteHeight = isFiniteHeight, isFiniteHeight = false,
nostrUriCallback = content.uri, nostrUriCallback = content.uri,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
) )

View File

@@ -24,10 +24,10 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyGridState import androidx.compose.foundation.lazy.grid.LazyGridState
@@ -72,8 +72,8 @@ import com.vitorpamplona.amethyst.ui.screen.FeedViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.mockAccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.mockAccountViewModel
import com.vitorpamplona.amethyst.ui.theme.FeedPadding import com.vitorpamplona.amethyst.ui.theme.FeedPadding
import com.vitorpamplona.amethyst.ui.theme.HalfPadding
import com.vitorpamplona.amethyst.ui.theme.QuoteBorder import com.vitorpamplona.amethyst.ui.theme.QuoteBorder
import com.vitorpamplona.amethyst.ui.theme.Size5dp
import com.vitorpamplona.quartz.events.PictureEvent import com.vitorpamplona.quartz.events.PictureEvent
import com.vitorpamplona.quartz.events.ProfileGalleryEntryEvent import com.vitorpamplona.quartz.events.ProfileGalleryEntryEvent
import com.vitorpamplona.quartz.events.VideoEvent import com.vitorpamplona.quartz.events.VideoEvent
@@ -133,15 +133,13 @@ private fun GalleryFeedLoaded(
state = listState, state = listState,
) { ) {
itemsIndexed(items.list, key = { _, item -> item.idHex }) { _, item -> itemsIndexed(items.list, key = { _, item -> item.idHex }) { _, item ->
Row(Modifier.fillMaxWidth().animateItemPlacement()) { GalleryCardCompose(
GalleryCardCompose( baseNote = item,
baseNote = item, routeForLastRead = routeForLastRead,
routeForLastRead = routeForLastRead, modifier = Modifier.fillMaxSize().animateItem().padding(Size5dp),
modifier = HalfPadding, accountViewModel = accountViewModel,
accountViewModel = accountViewModel, nav = nav,
nav = nav, )
)
}
} }
} }
} }
@@ -390,8 +388,6 @@ fun InnerRenderGalleryThumb(
if (content != null) { if (content != null) {
GalleryContentView( GalleryContentView(
content = content, content = content,
roundedCorner = false,
isFiniteHeight = false,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
) )
} else { } else {