Связанная пара «альбом устройства → серверный альбом» становится миррором: серверные фото материализуются на устройстве (оригинал в режиме копий, превью/ постер в переносе), состав меняется в обе стороны. - Признак происхождения (OWN/MIRROR) в индексе и метке провенанса; БД v8. - Материализация серверных фото (MirrorManager) с датой съёмки и меткой. - Дедуп, материализация ровно в один бакет при n:1, baseline «только новое»/«всё». - Двустороннее удаление с учётом прав; для зеркал намерением считается только явное удаление в приложении (надгробие), пропавшая локальная копия материализуется заново — иначе терялись серверные оригиналы. - Неудачное чтение серверного списка не считается пустым альбомом. - Устойчивое выключение синхронизации (syncDisabledAt): восстановление происхождения не возвращает связь. - Очередь загрузки — одно дренирующее задание вместо задания на файл (JobScheduler переставал запускать остаток на больших альбомах). - Дебаунс наблюдателя MediaStore и кэш sha256 по (size, dateModified). Покрыто unit-тестами и instrumented-тестами (режимы A/B/C и переключения, двусторонний миррор, объём 100 фото + 20 видео на тест).
1.6 KiB
1.6 KiB