diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 888e81e29..12fa577dc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -22,6 +22,8 @@ package com.vitorpamplona.amethyst.ui.components import android.content.Context import android.content.Intent +import android.util.Log +import android.widget.Toast import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibilityScope import androidx.compose.animation.fadeIn @@ -786,21 +788,26 @@ private suspend fun shareImageFile( videoUri: String, mimeType: String?, ) { - // Get sharable URI and file extension - val (uri, fileExtension) = ShareHelper.getSharableUriFromUrl(context, videoUri) + try { + // Get sharable URI and file extension + val (uri, fileExtension) = ShareHelper.getSharableUriFromUrl(context, videoUri) - // Determine mime type, use provided or derive from extension - val determinedMimeType = mimeType ?: "image/$fileExtension" + // Determine mime type, use provided or derive from extension + val determinedMimeType = mimeType ?: "image/$fileExtension" - // Create share intent - val shareIntent = - Intent(Intent.ACTION_SEND).apply { - type = determinedMimeType - putExtra(Intent.EXTRA_STREAM, uri) - addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - } + // Create share intent + val shareIntent = + Intent(Intent.ACTION_SEND).apply { + type = determinedMimeType + putExtra(Intent.EXTRA_STREAM, uri) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } - context.startActivity(Intent.createChooser(shareIntent, null)) + context.startActivity(Intent.createChooser(shareIntent, null)) + } catch (e: Exception) { + Log.w("ZoomableContentView", "Failed to share image: $videoUri", e) + Toast.makeText(context, context.getString(R.string.unable_to_share_image), Toast.LENGTH_SHORT).show() + } } private fun verifyHash(content: MediaUrlContent): Boolean? { diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index 0c41605dc..1cb4a92c5 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -1238,6 +1238,7 @@ Chat Relay The relay that all users of this chat connect to Share image… + Unable to share image, please try again later… Search hashtag: #%1$s