feat(android): album/photo attribute-actions and device gallery sync fixes
Album panel and photo sheet with attributes/actions for every album (server and device), local album rename/cover/delete, EXIF attribute settings, and a unified device-gallery sync check: - add repository "Атрибуты и действия" panel (swipe left) on server and device albums: cover, info, navigation, rename/delete; album settings screen; photo sheet (swipe up) with info, tags and actions; EXIF attribute settings backed by profile preferences - local albums use local metadata and actions: app-only display name and cover (new device_album_meta table), delete removes photos from the phone via the system delete consent - unified mode x state policy (GallerySyncPolicy/SyncCheck) runs on start and on album open: upload/offload in move, restore originals in copy/off - fix move->copy restore, offload of any linked-but-local original, provenance recovery that no longer overwrites the album mode, serialized reconcile and duplicate-upload suppression; prompt for "all files" access on start - album card caption: name (with linked server name when different) and storage icons (memory card / cloud) with item count Sync delta specs into android-client and archive the change add-mobile-album-photo-actions. Verified: unit/Robolectric suite green, :app:assembleDebug, :app:lint, and the DeviceSyncE2ETest instrumented suite on the emulator (7/7).
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Proposal
|
||||
|
||||
## Why
|
||||
|
||||
В web у альбомов и фото есть полноценное управление атрибутами и действиями (панель
|
||||
обложки/информации/навигации, разделы «Действия», «Метки», «Информация» с настройками
|
||||
EXIF-атрибутов). В Android-клиенте этого нет: экран альбома — только сетка, просмотр —
|
||||
только изображение с навигацией, а `GaloApi` умеет лишь переименовать/удалить/переместить.
|
||||
С телефона нельзя ни посмотреть свойства, ни выполнить действия «как в web».
|
||||
|
||||
## What Changes
|
||||
|
||||
- Новый **экранный жест**: свайп справа налево в любом альбоме (серверном и локальном)
|
||||
открывает панель **«Атрибуты и действия»** (drawer справа).
|
||||
- Панель альбома повторяет структуру web (`AlbumPanel` + экран настроек):
|
||||
- Атрибуты: «Обложка» (превью, выбрать/сбросить), «Информация» (название, описание,
|
||||
счётчики), «Навигация» (участники, настройки, ссылки для просмотра).
|
||||
- Действия: «Переименовать», «Удалить».
|
||||
- Источник данных: серверный альбом — данные сервера; локальный, связанный с серверным —
|
||||
реальные атрибуты связанного серверного альбома; локальный без связи — локальные
|
||||
значения (обложка/имя/счётчик), без раздела «Навигация».
|
||||
- Новый **жест просмотра**: свайп вверх в полноэкранном просмотре (серверном и device)
|
||||
открывает лист **«Атрибуты и действия»**, повторяющий web `PhotoPanel`:
|
||||
- Атрибуты: «Информация» (автор, файл, тип, разрешение, EXIF, снято, координаты,
|
||||
загружено) с настройками списка EXIF-атрибутов; «Метки».
|
||||
- Действия: «Открыть (просмотр)» (из сетки), «Скачать», «Переместить», «Копировать»,
|
||||
«Установить как обложку альбома», «Удалить»; переименование по тапу на имя.
|
||||
- Для device-медиа: если элемент сопоставлен серверному фото — реальные серверные
|
||||
атрибуты и действия; иначе локальные атрибуты и локальные действия.
|
||||
- Расширение клиентского слоя Android: `GaloApi` + DTO получают операции альбома
|
||||
(обновление/обложка/удаление/участники/share), копирование, метки, скачивание, `exif`
|
||||
и `preferences`; новый экран «Настройки атрибутов» (видимость + подписи, в профиль).
|
||||
- **Бэкенд не меняется**: все нужные endpoints уже есть.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
<!-- none -->
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `android-client`: добавляются требования к панели «Атрибуты и действия» на экранах
|
||||
альбомов, к листу «Атрибуты и действия» в полноэкранном просмотре, к выбору источника
|
||||
атрибутов для локальных альбомов/медиа и к поддерживающим операциям API/настройкам
|
||||
атрибутов в профиле.
|
||||
|
||||
## Impact
|
||||
|
||||
- `android/app/src/main/java/com/galo/android/`: `data/network/GaloApi.kt`, `.../dto/Dtos.kt`,
|
||||
`domain/model/`, `ui/album/`, `ui/viewer/`, `ui/devicealbum/`, новые экраны настроек.
|
||||
- Тесты Android (`android/app/src/androidTest`, `test`).
|
||||
- Бэкенд, web и схема spec-ов не затрагиваются (кроме новой delta для `android-client`).
|
||||
Reference in New Issue
Block a user