diff --git a/stream-chat-android-compose/api/stream-chat-android-compose.api b/stream-chat-android-compose/api/stream-chat-android-compose.api index 5fa3cf32382..439d63760c3 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -2060,6 +2060,7 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/intern public final class io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/ComposableSingletons$MessageComposerAttachmentFileItemKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/composer/internal/attachments/ComposableSingletons$MessageComposerAttachmentFileItemKt; public fun ()V + public final fun getLambda$-1126442206$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$1955682816$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } @@ -2067,9 +2068,9 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/intern public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/composer/internal/attachments/ComposableSingletons$MessageComposerAttachmentMediaItemKt; public fun ()V public final fun getLambda$-932284221$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$116152749$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$1523175629$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$369677867$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$384447459$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$485971275$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/ComposableSingletons$MessageComposerAttachmentsKt { diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentAudioRecordItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentAudioRecordItem.kt index 969fc3c77b0..d7de3a92a5c 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentAudioRecordItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentAudioRecordItem.kt @@ -87,7 +87,7 @@ internal fun MessageComposerAttachmentAudioRecordItem( .align(Alignment.TopEnd) .testTag("Stream_MessageComposerAttachmentCancelIcon"), onClick = { onAttachmentRemoved(attachment) }, - contentDescription = stringResource(R.string.stream_compose_remove_attachment), + contentDescription = stringResource(R.string.stream_compose_remove_attachment_voice_message), ) } } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentFileItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentFileItem.kt index 183f9fa109b..a91ae909551 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentFileItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentFileItem.kt @@ -108,11 +108,21 @@ internal fun MessageComposerAttachmentFileItem( .align(Alignment.TopEnd) .testTag("Stream_MessageComposerAttachmentCancelIcon"), onClick = { onAttachmentRemoved(attachment) }, - contentDescription = stringResource(R.string.stream_compose_remove_attachment), + contentDescription = fileAttachmentRemoveDescription(attachment), ) } } +@Composable +private fun fileAttachmentRemoveDescription(attachment: Attachment): String { + val displayName = attachment.title ?: attachment.name + return if (displayName.isNullOrBlank()) { + stringResource(R.string.stream_compose_remove_attachment_file) + } else { + stringResource(R.string.stream_compose_remove_attachment_file_named, displayName) + } +} + private val FileItemShape = RoundedCornerShape(StreamTokens.radiusLg) @Preview @@ -129,3 +139,18 @@ internal fun MessageComposerAttachmentFileItem() { attachment = PreviewAttachmentData.attachmentFile1, ) } + +@Preview +@Composable +private fun MessageComposerAttachmentFileItemUnnamedPreview() { + ChatTheme { + MessageComposerAttachmentFileItemUnnamed() + } +} + +@Composable +internal fun MessageComposerAttachmentFileItemUnnamed() { + MessageComposerAttachmentFileItem( + attachment = PreviewAttachmentData.attachmentFile1.copy(name = null), + ) +} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentMediaItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentMediaItem.kt index 01db35f5b06..c57ea6c2709 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentMediaItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentMediaItem.kt @@ -88,11 +88,30 @@ internal fun MessageComposerAttachmentMediaItem( .align(Alignment.TopEnd) .testTag("Stream_MessageComposerAttachmentCancelIcon"), onClick = { onAttachmentRemoved(attachment) }, - contentDescription = stringResource(R.string.stream_compose_remove_attachment), + contentDescription = mediaAttachmentRemoveDescription(attachment), ) } } +@Composable +private fun mediaAttachmentRemoveDescription(attachment: Attachment): String { + val displayName = attachment.title ?: attachment.name + val isVideo = attachment.type == AttachmentType.VIDEO + return when { + isVideo && !displayName.isNullOrBlank() -> + stringResource(R.string.stream_compose_remove_attachment_video_named, displayName) + + isVideo -> + stringResource(R.string.stream_compose_remove_attachment_video) + + !displayName.isNullOrBlank() -> + stringResource(R.string.stream_compose_remove_attachment_photo_named, displayName) + + else -> + stringResource(R.string.stream_compose_remove_attachment_photo) + } +} + private val MediaItemImageShape = RoundedCornerShape(StreamTokens.radiusLg) @Preview @@ -105,16 +124,24 @@ private fun MessageComposerAttachmentImageItemPreview() { @Composable internal fun MessageComposerAttachmentImageItem() { - val previewHandler = AsyncImagePreviewHandler { - ColorImage(color = Color.Green.toArgb(), width = 200, height = 150) - } - CompositionLocalProvider(LocalAsyncImagePreviewHandler provides previewHandler) { - MessageComposerAttachmentMediaItem( - attachment = PreviewAttachmentData.attachmentImage1, - ) + MessageComposerAttachmentItem(attachment = PreviewAttachmentData.attachmentImage1) +} + +@Preview +@Composable +private fun MessageComposerAttachmentImageItemUnnamedPreview() { + ChatTheme { + MessageComposerAttachmentImageItemUnnamed() } } +@Composable +internal fun MessageComposerAttachmentImageItemUnnamed() { + MessageComposerAttachmentItem( + attachment = PreviewAttachmentData.attachmentImage1.copy(name = null), + ) +} + @Preview @Composable private fun MessageComposerAttachmentVideoItemPreview() { @@ -125,12 +152,32 @@ private fun MessageComposerAttachmentVideoItemPreview() { @Composable internal fun MessageComposerAttachmentVideoItem() { + MessageComposerAttachmentItem(attachment = PreviewAttachmentData.attachmentVideo1) +} + +@Preview +@Composable +private fun MessageComposerAttachmentVideoItemUnnamedPreview() { + ChatTheme { + MessageComposerAttachmentVideoItemUnnamed() + } +} + +@Composable +internal fun MessageComposerAttachmentVideoItemUnnamed() { + MessageComposerAttachmentItem( + attachment = PreviewAttachmentData.attachmentVideo1.copy(name = null), + ) +} + +@Composable +private fun MessageComposerAttachmentItem(attachment: Attachment) { val previewHandler = AsyncImagePreviewHandler { ColorImage(color = Color.Green.toArgb(), width = 200, height = 150) } CompositionLocalProvider(LocalAsyncImagePreviewHandler provides previewHandler) { MessageComposerAttachmentMediaItem( - attachment = PreviewAttachmentData.attachmentVideo1, + attachment = attachment, ) } } diff --git a/stream-chat-android-compose/src/main/res/values-es/strings.xml b/stream-chat-android-compose/src/main/res/values-es/strings.xml index 85b4c11db75..202dcf8b5e5 100644 --- a/stream-chat-android-compose/src/main/res/values-es/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-es/strings.xml @@ -205,7 +205,13 @@ "Tú" "Archivos recientes" "+%1$d" - "Eliminar archivo adjunto" + "Eliminar foto" + "Eliminar foto %1$s" + "Eliminar vídeo" + "Eliminar vídeo %1$s" + "Eliminar archivo" + "Eliminar archivo %1$s" + "Eliminar mensaje de voz" "Respondió en un hilo" "Responder" "Reenviar" diff --git a/stream-chat-android-compose/src/main/res/values-fr/strings.xml b/stream-chat-android-compose/src/main/res/values-fr/strings.xml index e10943cb0c6..76a4240e600 100644 --- a/stream-chat-android-compose/src/main/res/values-fr/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-fr/strings.xml @@ -205,7 +205,13 @@ "Vous" "Fichiers récents" "+%1$d" - "Supprimer la pièce jointe" + "Supprimer la photo" + "Supprimer la photo %1$s" + "Supprimer la vidéo" + "Supprimer la vidéo %1$s" + "Supprimer le fichier" + "Supprimer le fichier %1$s" + "Supprimer le message vocal" "A répondu dans un fil" "Répondre" "Renvoyer" diff --git a/stream-chat-android-compose/src/main/res/values-hi/strings.xml b/stream-chat-android-compose/src/main/res/values-hi/strings.xml index 63e314f7d3b..2c511cd628b 100644 --- a/stream-chat-android-compose/src/main/res/values-hi/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-hi/strings.xml @@ -261,7 +261,13 @@ "आप" "हाल ही की फाइलें" "+%1$d" - "अटैचमेंट हटाएँ" + "फ़ोटो हटाएँ" + "फ़ोटो %1$s हटाएँ" + "वीडियो हटाएँ" + "वीडियो %1$s हटाएँ" + "फ़ाइल हटाएँ" + "फ़ाइल %1$s हटाएँ" + "वॉइस मैसेज हटाएँ" "एक थ्रेड को जवाब दिया" "जवाब दें" "पुनः भेजें" diff --git a/stream-chat-android-compose/src/main/res/values-in/strings.xml b/stream-chat-android-compose/src/main/res/values-in/strings.xml index 98b9626b7c4..d465a0a68d6 100644 --- a/stream-chat-android-compose/src/main/res/values-in/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-in/strings.xml @@ -205,7 +205,13 @@ "Anda" "File Terbaru" "+%1$d" - "Hapus lampiran" + "Hapus foto" + "Hapus foto %1$s" + "Hapus video" + "Hapus video %1$s" + "Hapus file" + "Hapus file %1$s" + "Hapus pesan suara" "Membalas di utas" "Balas" "Kirim ulang" diff --git a/stream-chat-android-compose/src/main/res/values-it/strings.xml b/stream-chat-android-compose/src/main/res/values-it/strings.xml index 545544454a7..f69c0f98282 100644 --- a/stream-chat-android-compose/src/main/res/values-it/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-it/strings.xml @@ -261,7 +261,13 @@ "Tu" "File recenti" "+%1$d" - "Rimuovi allegato" + "Rimuovi foto" + "Rimuovi foto %1$s" + "Rimuovi video" + "Rimuovi video %1$s" + "Rimuovi file" + "Rimuovi file %1$s" + "Rimuovi messaggio vocale" "Ha risposto in un thread" "Rispondi" "Reinvia" diff --git a/stream-chat-android-compose/src/main/res/values-ja/strings.xml b/stream-chat-android-compose/src/main/res/values-ja/strings.xml index 00175bcbf5b..d478f091e40 100644 --- a/stream-chat-android-compose/src/main/res/values-ja/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ja/strings.xml @@ -237,7 +237,13 @@ "あなた" "最近のファイル" "+%1$d" - "添付ファイルを削除" + "写真を削除" + "写真 %1$s を削除" + "動画を削除" + "動画 %1$s を削除" + "ファイルを削除" + "ファイル %1$s を削除" + "音声メッセージを削除" "スレッドに返信しました" "返信" "再送信" diff --git a/stream-chat-android-compose/src/main/res/values-ko/strings.xml b/stream-chat-android-compose/src/main/res/values-ko/strings.xml index 7f77b3707cd..b5b4caa2a14 100644 --- a/stream-chat-android-compose/src/main/res/values-ko/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ko/strings.xml @@ -237,7 +237,13 @@ "나" "최근 파일" "+%1$d" - "첨부파일 삭제" + "사진 삭제" + "사진 %1$s 삭제" + "동영상 삭제" + "동영상 %1$s 삭제" + "파일 삭제" + "파일 %1$s 삭제" + "음성 메시지 삭제" "스레드에 답장했습니다" "답장" "재전송" diff --git a/stream-chat-android-compose/src/main/res/values/strings.xml b/stream-chat-android-compose/src/main/res/values/strings.xml index f97baf9013b..4faa3c59bf2 100644 --- a/stream-chat-android-compose/src/main/res/values/strings.xml +++ b/stream-chat-android-compose/src/main/res/values/strings.xml @@ -252,7 +252,13 @@ %d unread +%1$d - Remove attachment + Remove photo + Remove photo %1$s + Remove video + Remove video %1$s + Remove file + Remove file %1$s + Remove voice message GIPHY Pinned Pinned by %1$s diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt index 669d45a63ce..66de36aaf84 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt @@ -66,4 +66,25 @@ internal class MessageComposerAttachmentsTest : PaparazziComposeTest { MessageComposerAttachmentFileItem() } } + + @Test + fun `image attachment item without title or name`() { + snapshotWithDarkModeRow { + MessageComposerAttachmentImageItemUnnamed() + } + } + + @Test + fun `video attachment item without title or name`() { + snapshotWithDarkModeRow { + MessageComposerAttachmentVideoItemUnnamed() + } + } + + @Test + fun `file attachment item without title or name`() { + snapshotWithDarkModeRow { + MessageComposerAttachmentFileItemUnnamed() + } + } } diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png new file mode 100644 index 00000000000..675f79136d9 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png new file mode 100644 index 00000000000..d4d0438d568 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png new file mode 100644 index 00000000000..29724311879 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png differ