feat(web): офлайн-режим с кешем эскизов и превью
Добавлен service worker: оболочка приложения, ответы API и варианты изображений (эскиз, превью, средний) сохраняются в офлайн-кеше браузера. Ключ кеша картинки — путь объекта без подписи, поэтому обновление подписи не плодит записи; оригиналы и видео не кешируются. Кеш ограничен по размеру и вытесняет старые записи, при выходе из аккаунта очищается, а в верхней панели появляется индикатор «Офлайн». Добавлен манифест PWA; манифест отдаётся с типом application/manifest+json.
This commit is contained in:
@@ -746,3 +746,32 @@ SHALL открывать режим просмотра.
|
||||
#### Scenario: Удаление альбома
|
||||
- **WHEN** пользователь удаляет альбом с фото
|
||||
- **THEN** его фото попадают в корзину, а число элементов корзины в рейле увеличивается на их количество
|
||||
|
||||
### Requirement: Офлайн-режим веб-приложения
|
||||
Веб-приложение SHALL хранить в офлайн-кеше браузера оболочку приложения, ответы API
|
||||
(списки альбомов и фото) и варианты изображений: эскиз, превью и средний вариант.
|
||||
Ключ кеша картинки SHALL определяться путём объекта без подписи, чтобы обновление подписи
|
||||
не создавало новые записи. Оригиналы и видео SHALL не кешироваться. Размер кеша SHALL быть
|
||||
ограничен, а более старые записи SHALL вытесняться первыми. При выходе из аккаунта кеш
|
||||
SHALL очищаться. При отсутствии сети приложение SHALL открываться и показывать сохранённые
|
||||
данные, а верхняя панель SHALL показывать индикатор «Офлайн».
|
||||
|
||||
#### Scenario: Просмотр без сети
|
||||
- **WHEN** пользователь открывает ранее просмотренный альбом без подключения к сети
|
||||
- **THEN** приложение открывается, показывает сохранённый список фото и их эскизы
|
||||
|
||||
#### Scenario: Смена подписи объекта
|
||||
- **WHEN** подпись объекта обновляется, а содержимое остаётся прежним
|
||||
- **THEN** используется та же запись кеша, а не новая
|
||||
|
||||
#### Scenario: Ограничение кеша
|
||||
- **WHEN** кеш картинок превышает предел
|
||||
- **THEN** самые старые записи вытесняются, а свежие остаются
|
||||
|
||||
#### Scenario: Выход из аккаунта
|
||||
- **WHEN** пользователь выходит из аккаунта
|
||||
- **THEN** офлайн-кеш картинок и данных очищается
|
||||
|
||||
#### Scenario: Индикатор офлайна
|
||||
- **WHEN** браузер сообщает об отсутствии сети
|
||||
- **THEN** верхняя панель показывает индикатор «Офлайн»
|
||||
|
||||
Reference in New Issue
Block a user