Repository navigation
Synchronisation Health Connect - #22
Merged
Merged
Conversation
Les données restaient enfermées dans l'app. Elles sont maintenant partagées avec le magasin de santé d'Android, si l'utilisateur l'active. - Écriture des séances (`ExerciseSessionRecord`), des calories brûlées (`ActiveCaloriesBurnedRecord`) et du journal alimentaire avec ses macros (`NutritionRecord`) ; lecture du poids, proposée et non appliquée d'office. - Idempotence par `clientRecordId` plutôt que par une table de correspondance : relancer la synchronisation met à jour l'existant au lieu de dupliquer, et corriger une séance corrige l'enregistrement. - Écran dédié dans le profil : disponibilité, autorisations, synchronisation manuelle, date de dernière réussite. Rien ne part sans action explicite, et l'app reste entière si Health Connect est absent ou refusé. FitTrack ne retient que le jour d'une séance, jamais son heure, alors que Health Connect exige un créneau. Les séances d'une même journée sont donc posées à la suite en fin d'après-midi, et les repas à l'heure habituelle de leur catégorie. Health Connect refusant tout enregistrement à venir, un créneau qui déborderait est reculé juste ce qu'il faut : sans cela, une synchronisation lancée avant 18 h échouait systématiquement — constaté sur l'émulateur, corrigé, et couvert par quatre tests. Le build devait monter pour accueillir le SDK : AGP 8.7.3 → 8.13.2, compileSdk 35 → 36, Gradle 8.11.1 → 8.13, CameraX 1.4.1 → 1.6.2. `concurrent-futures-ktx` rétablit au passage le vrai artefact guava, que Health Connect masquait, et remplace le `addListener` de l'aperçu caméra par un `await()`. Vérifié sur émulateur : autorisations accordées, deux séances et deux repas envoyés, puis trois synchronisations successives qui laissent exactement deux entrées dans Health Connect, enchaînées sans chevauchement.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ferme #17. Remplace #20, fermée automatiquement quand la branche de base
macros-openfoodfactsa été supprimée à la fusion de #14. Contenu identique.Ce que ça fait
L'idempotence passe par
clientRecordId: relancer la synchro met à jour l'existant au lieu de dupliquer.Un bug que seul le test sur appareil a révélé
Health Connect refuse tout enregistrement dans le futur. FitTrack ne retient que le jour d'une séance : la convention « séance à 18 h » faisait échouer toute synchronisation lancée avant 18 h. Les créneaux sont désormais reculés juste ce qu'il faut. Couvert par 4 tests.
Montée du build, imposée par le SDK
AGP 8.7.3 → 8.13.2 · compileSdk 35 → 36 · Gradle 8.11.1 → 8.13 · CameraX 1.4.1 → 1.6.2
Health Connect masquait aussi le vrai artefact guava, ce qui cassait l'aperçu caméra :
concurrent-futures-ktxle rétablit et remplace leaddListenerdu scan par unawait().Vérifié sur émulateur
🤖 Generated with Claude Code