43 lines
2.7 KiB
Markdown
43 lines
2.7 KiB
Markdown
# Proposal
|
|
|
|
## Why
|
|
|
|
Счётчик корзины в рейле альбомов (`trash.count`) перезагружается только при смене
|
|
маршрута и после «Очистить корзину». Любая другая операция, меняющая содержимое корзины,
|
|
не обновляет его: после удаления фото счётчик остаётся прежним, пока пользователь не
|
|
перейдёт в другой раздел. Это и есть сообщённый дефект — «при удалении фото на корзине не
|
|
меняется счётчик».
|
|
|
|
## What Changes
|
|
|
|
- Рейл SHALL обновлять число элементов корзины сразу после каждого действия, меняющего её
|
|
содержимое, без перезагрузки страницы: помещение фото в корзину (одиночное и пакетное),
|
|
восстановление, окончательное удаление, очистка корзины и удаление альбома (его фото
|
|
уходят в корзину).
|
|
- Изменения только во фронтенде: серверный `GET /api/trash/count` и семантика мягкого
|
|
удаления корректны и не меняются.
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
Нет.
|
|
|
|
### Modified Capabilities
|
|
|
|
- `ui-workspace`: добавляется требование синхронизации счётчика корзины в рейле с
|
|
операциями, меняющими содержимое корзины, без перезагрузки страницы.
|
|
|
|
## Impact
|
|
|
|
- Frontend: `frontend/src/lib/stores/trash.svelte.ts` (способ обновления счётчика),
|
|
`frontend/src/routes/(app)/albums/[id]/+page.svelte` (пакетное удаление),
|
|
`frontend/src/lib/components/PhotoPanel.svelte` (удаление из панели/просмотра),
|
|
`frontend/src/routes/(app)/albums/[id]/photos/[photoId]/+page.svelte` (удаление в
|
|
просмотре), `frontend/src/routes/(app)/trash/+page.svelte` (восстановление и
|
|
окончательное удаление), `frontend/src/lib/components/AlbumActionsDialogs.svelte` и
|
|
`frontend/src/routes/(app)/albums/[id]/settings/+page.svelte` (удаление альбома).
|
|
- Backend: не затрагивается.
|
|
- Вне объёма: синхронизация счётчика между сессиями/устройствами через SSE (событий корзины
|
|
сервер не публикует) и Android-клиент (корзины в нём нет).
|