feat(mobile): queue track reactions made offline and sync on reconnect (M5)
Likes and dislikes without a network are kept in a pending_reactions table (last reaction per track wins) and sent when the connection returns, instead of being rolled back. Downloaded track DTOs pick up the new reaction so the offline wave and Downloads reflect it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
be34ee5361
commit
756e915ff9
5 files changed
+74
-9
No files matched your search
+2
-1
@@ -67,10 +67,11 @@
|
||||
`documentDirectory/offline/<owner>/`, обложка 300 px рядом; `owner` — хэш «сервер + пользователь».
|
||||
Перед загрузкой берётся свежий DTO (`POST /tracks/batch`), т.к. подписанная ссылка живёт 12 ч.
|
||||
- `events.ts` — sink для `EventBuffer`: при сетевой ошибке пачка уходит в `pending_events` и досылается при появлении сети.
|
||||
Реакции так же: без сети — в `pending_reactions` (по треку хранится последняя), UI и DTO скачанного обновляются сразу;
|
||||
ответ сервера 4xx откатывает реакцию в UI, при досылке — отбрасывает отложенную.
|
||||
- Запуск без сети: `AuthSession.restore()` берёт последнего пользователя из `RefreshStore.getUser` (состояние
|
||||
`signed_in` с `offline: true`); access-токен получается перед первым запросом, когда сеть вернётся.
|
||||
- Офлайн-волна: если `POST /wave/sessions` не удался — перемешанные скачанные треки без дизлайков, лайки ближе к началу.
|
||||
- Пока не сделано: очередь мутаций реакций без сети (лайк офлайн откатывается).
|
||||
|
||||
## Самообновление
|
||||
|
||||
|
||||
Reference in new issue
Block a user