Adds image url when previews can't be loaded.
This commit is contained in:
@@ -28,10 +28,12 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
|
import coil.compose.AsyncImagePainter
|
||||||
import com.google.accompanist.pager.ExperimentalPagerApi
|
import com.google.accompanist.pager.ExperimentalPagerApi
|
||||||
import com.google.accompanist.pager.PagerState
|
import com.google.accompanist.pager.PagerState
|
||||||
import com.vitorpamplona.amethyst.R
|
import com.vitorpamplona.amethyst.R
|
||||||
import com.vitorpamplona.amethyst.ui.actions.CloseButton
|
import com.vitorpamplona.amethyst.ui.actions.CloseButton
|
||||||
|
import com.vitorpamplona.amethyst.ui.actions.LoadingAnimation
|
||||||
import com.vitorpamplona.amethyst.ui.actions.SaveToGallery
|
import com.vitorpamplona.amethyst.ui.actions.SaveToGallery
|
||||||
import net.engawapg.lib.zoomable.rememberZoomState
|
import net.engawapg.lib.zoomable.rememberZoomState
|
||||||
import net.engawapg.lib.zoomable.zoomable
|
import net.engawapg.lib.zoomable.zoomable
|
||||||
@@ -46,6 +48,11 @@ fun ZoomableImageView(word: String, images: List<String> = listOf(word)) {
|
|||||||
mutableStateOf(false)
|
mutableStateOf(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// store the dialog open or close state
|
||||||
|
var imageState by remember {
|
||||||
|
mutableStateOf<AsyncImagePainter.State?>(null)
|
||||||
|
}
|
||||||
|
|
||||||
if (imageExtension.matcher(word).matches()) {
|
if (imageExtension.matcher(word).matches()) {
|
||||||
AsyncImage(
|
AsyncImage(
|
||||||
model = word,
|
model = word,
|
||||||
@@ -63,8 +70,19 @@ fun ZoomableImageView(word: String, images: List<String> = listOf(word)) {
|
|||||||
.combinedClickable(
|
.combinedClickable(
|
||||||
onClick = { dialogOpen = true },
|
onClick = { dialogOpen = true },
|
||||||
onLongClick = { clipboardManager.setText(AnnotatedString(word)) }
|
onLongClick = { clipboardManager.setText(AnnotatedString(word)) }
|
||||||
|
),
|
||||||
|
onLoading = {
|
||||||
|
imageState = it
|
||||||
|
},
|
||||||
|
onSuccess = {
|
||||||
|
imageState = it
|
||||||
|
}
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
if (imageState !is AsyncImagePainter.State.Success) {
|
||||||
|
ClickableUrl(urlText = "$word ", url = word)
|
||||||
|
LoadingAnimation(indicatorSize = 15.dp)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
VideoView(word) { dialogOpen = true }
|
VideoView(word) { dialogOpen = true }
|
||||||
}
|
}
|
||||||
@@ -86,7 +104,9 @@ fun ZoomableImageDialog(imageUrl: String, allImages: List<String> = listOf(image
|
|||||||
var pagerState: PagerState = remember { PagerState() }
|
var pagerState: PagerState = remember { PagerState() }
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.padding(10.dp).fillMaxWidth(),
|
modifier = Modifier
|
||||||
|
.padding(10.dp)
|
||||||
|
.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user