fix(widget): le pont effaçait l'hydratation à chaque chargement de page
Voilà la vraie cause du total qui retombait à zéro. `setSnapshot` reconstruisait le snapshot **de zéro** avec `today` et `forme` seulement : tout ce que `CoachQuickSync` venait de créditer — hydratation, cafés, calories — était écrasé au premier chargement de page suivant. Mon correctif précédent créditait donc un snapshot que le pont effaçait dans la foulée. Il reste utile (il tient l'affichage entre la synchro et le prochain chargement), mais il ne pouvait pas suffire seul. Les champs de nutrition sont désormais FACULTATIFS dans l'appel : absents, on conserve ceux du snapshot existant au lieu de les vider. Un pont qui n'envoie qu'une partie des données ne doit pas détruire le reste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,25 @@ public class CoachWidgetBridgePlugin: CAPPlugin, CAPBridgedPlugin {
|
||||
label: f["label"] as? String
|
||||
)
|
||||
}
|
||||
let snapshot = CoachWidgetSnapshot(updatedAt: Date(), today: today, forme: forme)
|
||||
/* Les champs de nutrition sont FACULTATIFS dans l'appel : le pont web
|
||||
peut les omettre (objectifs indisponibles, appel partiel). Dans ce
|
||||
cas on conserve ceux du snapshot existant plutôt que de les effacer.
|
||||
|
||||
C'est le bug qui faisait retomber le total du widget à zéro : le
|
||||
snapshot était reconstruit de zéro à chaque chargement de page, avec
|
||||
`today` et `forme` seulement, et l'hydratation créditée quelques
|
||||
instants plus tôt disparaissait. */
|
||||
let previous = CoachWidgetStore.load()
|
||||
func number(_ key: String) -> Double? {
|
||||
(call.getValue(key) as? NSNumber)?.doubleValue
|
||||
}
|
||||
|
||||
var snapshot = CoachWidgetSnapshot(updatedAt: Date(), today: today, forme: forme)
|
||||
snapshot.waterMlToday = number("waterMlToday") ?? previous?.waterMlToday
|
||||
snapshot.coffeeCountToday =
|
||||
(call.getValue("coffeeCountToday") as? NSNumber)?.intValue ?? previous?.coffeeCountToday
|
||||
snapshot.kcalToday = number("kcalToday") ?? previous?.kcalToday
|
||||
snapshot.kcalGoal = number("kcalGoal") ?? previous?.kcalGoal
|
||||
guard CoachWidgetStore.save(snapshot) else {
|
||||
call.reject("Échec de sauvegarde du snapshot widget (App Group indisponible ?)")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user