Возврат из переноса в копии скачивает оригиналы с сервера, но ход нигде не отражался: карточка умела показывать только загрузку, а восстановление шло в области экрана и обрывалось при уходе с него. Добавлен RestoreCoordinator: выполняет восстановление в области приложения (уход с экрана больше не прерывает), ведёт ход «альбом -> восстановлено из всего» и защищает от одновременного запуска по одному альбому. RestoreManager сообщает ход по каждому элементу и вынесен за интерфейс AlbumRestorer; SyncCheck ходит через координатора и, как и раньше, дожидается завершения. Карточка альбома показывает «Копии — восстановление N%» (пульсирует), экран альбома устройства — строку «Восстановление оригиналов: X из Y» с полосой. Изменение OpenSpec: android-album-restore-progress.
1.4 KiB
1.4 KiB
Spec Delta
ADDED Requirements
Requirement: Ход и устойчивость восстановления оригиналов
При возврате оригиналов на устройство приложение SHALL выполнять операцию до конца независимо от того, остаётся ли открыт экран альбома устройства, и SHALL сообщать ход: сколько элементов восстановлено из скольких намечено.
Scenario: Уход с экрана
- WHEN восстановление оригиналов запущено и пользователь покидает экран альбома устройства
- THEN восстановление продолжается и завершается
Scenario: Ход операции
- WHEN восстановление оригиналов идёт
- THEN приложение знает и сообщает, сколько элементов уже восстановлено из намеченных
Scenario: Нечего восстанавливать
- WHEN среди элементов альбома нет превью с серверной копией
- THEN операция не запускается и ход не показывается