android-client: +1 требование — выбор порядка карточек и направления, порядок охватывает весь список вместе с альбомами устройства.
4.0 KiB
4.0 KiB
Tasks
1. Ключи сортировки и хранение выбора
- 1.1 Перечисление
AlbumSort(время изменения, название, число фото) с разбором сохранённого значения и дефолтом «по времени изменения»; проверено unit-тестами - 1.2 Хранить пару (ключ, обратный порядок) в DataStore и отдавать её узким портом
AlbumSortPreference; проверить тестом дефолт (по времени изменения, без обратного порядка) и чтение сохранённой пары обратно
2. Дата альбома устройства
- 2.1 Добавить альбому устройства дату последнего изменения — самый свежий его элемент, как при выборе обложки, — и заполнять её в маппинге MediaStore; проверить тестом маппинга, что дата соответствует самому свежему элементу
3. Единый порядок списка
- 3.1 Сортировать один общий список карточек (альбомы устройства и серверные вместе) по выбранному ключу; проверить тестами
AlbumListBuilder, что порядок соответствует ключу и что карточки обоих источников перемешаны, а не сгруппированы - 3.2 Обратный порядок инвертирует выбранный ключ; проверить тестом, что направление меняет порядок для каждого ключа, а отсутствие даты не ломает сравнение
- 3.3 Связанная пара «устройство → серверный» участвует в общем порядке как карточка устройства; проверить тестом, что связанный серверный альбом не появляется отдельной записью и остаётся в общем порядке
4. Выбор в интерфейсе
- 4.1 Пробросить пару (ключ, обратный порядок) в
AlbumsViewModelи перестраивать список без перезапроса; проверить тестом ViewModel, что смена ключа и включение обратного порядка меняют порядок - 4.2 Меню сортировки: три ключа с отметкой текущего и переключатель «Обратный порядок»; проверить Compose-тестом, что выбор меняет порядок, а отметки следуют за выбором
- 4.3 Обновить
android/README.md: сортировка охватывает весь список, есть обратный порядок
5. Проверка
- 5.1 Проверить на устройстве сохранение выбора между запусками: выбрать «по названию» вместе с обратным порядком, перезапустить экран и убедиться, что порядок сохранился
- 5.2 Прогнать на финальной ревизии
cd android && ./gradlew testиcd android && ./gradlew :app:assembleDebug; зафиксировать, что обе команды проходят
Workflow follow-up
- Заархивировать change после прохождения ревью проекта (
openspec archive android-album-sort). - Проверить, что после архивации требование вошло в
openspec/specs/android-client/spec.md, аopenspec validate --strict android-album-sortне выдаёт ошибок.