From 9445f1101003549648f26d559ee27d1b40e63149 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Mon, 26 Jan 2026 18:14:11 +0500 Subject: [PATCH] feat: Update media selection logic for Telegram-style interaction; improve user experience for image and video selection --- .../components/MediaPickerBottomSheet.kt | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/components/MediaPickerBottomSheet.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/components/MediaPickerBottomSheet.kt index 22c3d7e..d471ce1 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/components/MediaPickerBottomSheet.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/components/MediaPickerBottomSheet.kt @@ -257,29 +257,30 @@ fun MediaPickerBottomSheet( mediaItems = mediaItems, selectedItems = selectedItems, onItemClick = { item -> - // Single tap - open editor for images, or select for videos - if (!item.isVideo) { - // Open image editor - editingItem = item - } else { - // For videos - just toggle selection - selectedItems = if (item.id in selectedItems) { - selectedItems - item.id - } else if (selectedItems.size < maxSelection) { - selectedItems + item.id + // Telegram-style: + // - Первый клик по невыбранной фото → выбрать + // - Клик по уже выбранной фото → открыть редактор + if (item.id in selectedItems) { + // Уже выбрана - открываем редактор (только для изображений) + if (!item.isVideo) { + editingItem = item } else { - selectedItems + // Для видео - снимаем выделение + selectedItems = selectedItems - item.id + } + } else { + // Не выбрана - добавляем в selection + if (selectedItems.size < maxSelection) { + selectedItems = selectedItems + item.id } } }, onItemLongClick = { item -> - // Long press - toggle selection (multi-select mode) - selectedItems = if (item.id in selectedItems) { - selectedItems - item.id + // Long press - снять выделение если выбрана + if (item.id in selectedItems) { + selectedItems = selectedItems - item.id } else if (selectedItems.size < maxSelection) { - selectedItems + item.id - } else { - selectedItems + selectedItems = selectedItems + item.id } }, isDarkTheme = isDarkTheme,