Files
ds-galo/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/tasks.md
T

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 после прохождения ревью проекта.