Show a spinner in the top-right of the photo viewer while the original is being loaded on zoom, so the wait is visible. Only the original triggers it; the fitted preview and a re-shown preview never do. Cover the visibility gate with a unit test. OpenSpec change: add-mobile-photo-zoom
2.2 KiB
2.2 KiB
Tasks
1. Zoomable image component
- 1.1 Implement зум-математику (диапазон
[fitScale, 2.0], якорь в точку жеста) отдельным тестируемым помощником; проверить юнит-тестом клампы предела и пересчёт якоря при double-tap - 1.2 Реализовать слой жестов (pinch + панорамирование при зуме + double-tap) над изображением
через
pointerInput+graphicsLayer; проверить Compose-тестом (Robolectric) на pinch и double-tap - 1.3 Переключать источник на
originalUrlпри входе в зум, сохраняя cache key Coil; проверить, что запрос данных меняется приzoomedи не сбрасывает дисковый кэш
2. Viewer integration
- 2.1 Поднять
zoomedвViewerContentи учитывать его вpagerScrollEnabled; проверить Robolectric-тестом «свайп не листает увеличенное фото» - 2.2 Подключить zoomable-обёртку в ветку изображения
MediaPage; проверить тестом, что при переходе на другой элемент и обратно изображение показывается во вписанном виде
3. Loading indicator
- 3.1 Показывать индикатор загрузки в правом верхнем углу, пока грузится оригинал при зуме; проверить тестом условие показа и что вписанный вид индикатор не показывает
4. Integration verification
- 4.1 Прогнать
./gradlew testи./gradlew lintDebug; на эмуляторе вручную проверить pinch, панорамирование, double-tap, предел 200%, а также что видео и панорама не затронуты
Workflow follow-up
- Архив change после прохождения ревью проекта.