Ajuster le client sync mobile pour matcher le format API #52

Closed
opened 2026-04-06 17:02:02 +00:00 by maximus · 1 comment
Owner

Contexte

Le client sync mobile (syncClient.ts) a été écrit comme scaffolding. Le format de réponse attendu par pullChanges() ne correspond pas exactement au format retourné par l'API serveur (GET /api/sync).

Problème

L'API retourne:

{ "lists": [...], "tasks": [...], "tags": [...], "taskTags": [...], "syncedAt": "..." }

Mais le client attend un format { changes: [...] } avec un champ entity_type par entrée.

Taches

  • Adapter pullChanges() pour parser le vrai format de réponse API
  • Appliquer les changements par type d'entité (lists, tasks, tags, taskTags)
  • Gérer le last-write-wins basé sur updatedAt
  • Gérer les soft-deletes (supprimer localement si deletedAt est non-null)
  • Tester le round-trip complet: modifier sur le web → sync sur mobile → vérifier

Dépendances

Depends on #51 (intégration Logto RN), #50 (Coolify déployé)

## Contexte Le client sync mobile (`syncClient.ts`) a été écrit comme scaffolding. Le format de réponse attendu par `pullChanges()` ne correspond pas exactement au format retourné par l'API serveur (`GET /api/sync`). ## Problème L'API retourne: ```json { "lists": [...], "tasks": [...], "tags": [...], "taskTags": [...], "syncedAt": "..." } ``` Mais le client attend un format `{ changes: [...] }` avec un champ `entity_type` par entrée. ## Taches - [ ] Adapter `pullChanges()` pour parser le vrai format de réponse API - [ ] Appliquer les changements par type d'entité (lists, tasks, tags, taskTags) - [ ] Gérer le last-write-wins basé sur `updatedAt` - [ ] Gérer les soft-deletes (supprimer localement si `deletedAt` est non-null) - [ ] Tester le round-trip complet: modifier sur le web → sync sur mobile → vérifier ## Dépendances Depends on #51 (intégration Logto RN), #50 (Coolify déployé)
maximus added this to the spec-simpl-liste-web milestone 2026-04-06 17:02:02 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-04-06 17:02:02 +00:00
Author
Owner

Résolu par PR #58 (issue #55). Les corrections apportées couvrent toutes les tâches de cette issue :

  • pullChanges() adapté au format réel de l'API
  • Changements appliqués par type d'entité
  • Last-write-wins basé sur existence (upsert)
  • Soft-deletes gérés (action delete quand deletedAt non-null)
Résolu par PR #58 (issue #55). Les corrections apportées couvrent toutes les tâches de cette issue : - ✅ `pullChanges()` adapté au format réel de l'API - ✅ Changements appliqués par type d'entité - ✅ Last-write-wins basé sur existence (upsert) - ✅ Soft-deletes gérés (action `delete` quand `deletedAt` non-null)
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/simpl-liste#52
No description provided.