mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-22 18:41:37 +02:00
Simplifies the Gallery stack
This commit is contained in:
@@ -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 {
|
||||||
|
@@ -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,
|
||||||
)
|
)
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user