# Spec Delta ## ADDED Requirements ### Requirement: Живое обновление списка альбомов Пока пользователь авторизован, приложение SHALL поддерживать персональный поток и применять события жизненного цикла альбома к локальному кэшу: создавать или заменять альбом по полученному объекту и удалять его по идентификатору, не выполняя дополнительный запрос списка. #### Scenario: Альбом создан или изменён в другом месте - **WHEN** в персональный поток приходит событие создания или изменения доступного альбома - **THEN** альбом появляется в списке или заменяется без запроса списка #### Scenario: Неизвестное событие - **WHEN** в персональный поток приходит событие, не относящееся к жизненному циклу альбома - **THEN** приложение не меняет локальный список #### Scenario: Навигация между экранами - **WHEN** пользователь переходит с главного экрана на другой экран приложения - **THEN** подписка на персональный поток не пересоздаётся #### Scenario: Выход из аккаунта - **WHEN** пользователь выходит из аккаунта - **THEN** подписка на персональный поток закрывается ### Requirement: Догон списка при переподключении персонального потока После восстановления персонального потока приложение SHALL приводить локальный список альбомов в соответствие с серверным снимком, чтобы отразить изменения, пропущенные за время разрыва соединения. #### Scenario: Переподключение - **WHEN** персональный поток восстановился после разрыва - **THEN** приложение перезапрашивает список альбомов, удаляя из кэша альбомы, которых на сервере больше нет ### Requirement: Потеря доступа к альбому Приложение SHALL переставать отображать альбом, удалённый владельцем или ставший недоступным после исключения участника: альбом SHALL исчезать из локального кэша и списка, а экран открытого альбома SHALL возвращаться к списку. #### Scenario: Альбом удалён во время просмотра - **WHEN** владелец удаляет альбом, пока участник просматривает экран этого альбома - **THEN** экран перестаёт показывать альбом и возвращается к списку #### Scenario: Участник исключён - **WHEN** участника исключают из альбома - **THEN** альбом исчезает из его списка, а открытый экран возвращается к списку #### Scenario: Экран альбома не открыт - **WHEN** альбом удалён, а его экран не открыт - **THEN** карточка альбома исчезает из списка #### Scenario: Отсутствие альбома в кэше без сети - **WHEN** приложение открывает экран альбома, которого нет в кэше, и сеть недоступна - **THEN** экран не считается потерявшим доступ и не закрывается сам