feat: Update media selection logic for Telegram-style interaction; improve user experience for image and video selection
This commit is contained in:
@@ -257,29 +257,30 @@ fun MediaPickerBottomSheet(
|
|||||||
mediaItems = mediaItems,
|
mediaItems = mediaItems,
|
||||||
selectedItems = selectedItems,
|
selectedItems = selectedItems,
|
||||||
onItemClick = { item ->
|
onItemClick = { item ->
|
||||||
// Single tap - open editor for images, or select for videos
|
// Telegram-style:
|
||||||
if (!item.isVideo) {
|
// - Первый клик по невыбранной фото → выбрать
|
||||||
// Open image editor
|
// - Клик по уже выбранной фото → открыть редактор
|
||||||
editingItem = item
|
if (item.id in selectedItems) {
|
||||||
} else {
|
// Уже выбрана - открываем редактор (только для изображений)
|
||||||
// For videos - just toggle selection
|
if (!item.isVideo) {
|
||||||
selectedItems = if (item.id in selectedItems) {
|
editingItem = item
|
||||||
selectedItems - item.id
|
|
||||||
} else if (selectedItems.size < maxSelection) {
|
|
||||||
selectedItems + item.id
|
|
||||||
} else {
|
} else {
|
||||||
selectedItems
|
// Для видео - снимаем выделение
|
||||||
|
selectedItems = selectedItems - item.id
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Не выбрана - добавляем в selection
|
||||||
|
if (selectedItems.size < maxSelection) {
|
||||||
|
selectedItems = selectedItems + item.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onItemLongClick = { item ->
|
onItemLongClick = { item ->
|
||||||
// Long press - toggle selection (multi-select mode)
|
// Long press - снять выделение если выбрана
|
||||||
selectedItems = if (item.id in selectedItems) {
|
if (item.id in selectedItems) {
|
||||||
selectedItems - item.id
|
selectedItems = selectedItems - item.id
|
||||||
} else if (selectedItems.size < maxSelection) {
|
} else if (selectedItems.size < maxSelection) {
|
||||||
selectedItems + item.id
|
selectedItems = selectedItems + item.id
|
||||||
} else {
|
|
||||||
selectedItems
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
isDarkTheme = isDarkTheme,
|
isDarkTheme = isDarkTheme,
|
||||||
|
|||||||
Reference in New Issue
Block a user