Возврат из переноса в копии скачивает оригиналы с сервера, но ход нигде не отражался: карточка умела показывать только загрузку, а восстановление шло в области экрана и обрывалось при уходе с него. Добавлен RestoreCoordinator: выполняет восстановление в области приложения (уход с экрана больше не прерывает), ведёт ход «альбом -> восстановлено из всего» и защищает от одновременного запуска по одному альбому. RestoreManager сообщает ход по каждому элементу и вынесен за интерфейс AlbumRestorer; SyncCheck ходит через координатора и, как и раньше, дожидается завершения. Карточка альбома показывает «Копии — восстановление N%» (пульсирует), экран альбома устройства — строку «Восстановление оригиналов: X из Y» с полосой. Изменение OpenSpec: android-album-restore-progress.
3.7 KiB
3.7 KiB
Proposal
Why
При возврате из режима переноса в копии (MOVE → COPY) приложение скачивает оригиналы с
сервера и записывает их поверх превью, но никак не показывает ход. Карточка альбома умеет
показывать только загрузку (upload-джобы), которых при этом переходе не возникает, поэтому
третья строка молчит, а операция идёт.
Дополнительно восстановление запускается в области экрана (viewModelScope): стоит уйти с
экрана альбома устройства — и оно обрывается на середине, хотя пользователь именно затем и
уходит в список, чтобы посмотреть ход.
(Для альбома с потерянными копиями восстановление и не начнётся: такие элементы в целевой набор не входят — это отдельный случай, здесь не меняется.)
What Changes
- Восстановление становится наблюдаемой операцией: приложение ведёт счётчик «готово из всего» по каждому альбому устройства.
- Восстановление выполняется в области приложения, а не экрана: уход с экрана альбома не прерывает его.
- Карточка альбома показывает ход:
Копии — восстановление N%(и пульсирует, пока идёт). - Экран альбома устройства также показывает ход восстановления.
- BREAKING: нет. Загрузка, разгрузка и режимы не меняются; добавляется только видимость и устойчивость уже существующей операции.
Capabilities
New Capabilities
Нет — поведение относится к существующим способностям.
Modified Capabilities
phone-album-sync: восстановление оригиналов выполняется до конца независимо от ухода с экрана и сообщает ход (сколько элементов восстановлено из скольких).android-client: карточка альбома и экран альбома устройства показывают ход восстановления оригиналов.
Impact
- Код (Android):
data/sync/RestoreManager(обратный вызов хода, интерфейс исполнителя), новыйdata/sync/RestoreCoordinator(область приложения + прогресс по альбомам),di/AppContainer(создание координатора),data/sync/SyncCheck(восстановление через координатора),ui/devicealbum/DeviceAlbumViewModel(запуск через координатора, ход в состоянии) иDeviceAlbumScreen(строка хода),domain/sync/AlbumSyncProgressиui/albums/AlbumsViewModel/AlbumsScreen(ход на карточке). - Схема Room: без изменений.
- API и бэкенд: не затрагиваются.
- Веб-клиент: не затрагивается.
- Не затрагивается: восстановление потерянных копий из корзины сервера.