Reload the rail trash count after every operation that changes the trash contents, not just navigation and empty-trash: moving photos to trash (grid, panel, viewer), restoring, permanent delete and deleting an album. Previously the counter stayed stale until the next route change.
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-клиент (корзины в нём нет).
|