From c407aa83647e84c9e14a884280db5fd0de10bca8 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Sun, 31 May 2026 13:38:33 +0200 Subject: [PATCH] =?UTF-8?q?fix(workoutkit):=20efface=20les=20s=C3=A9ances?= =?UTF-8?q?=20programm=C3=A9es=20avant=20d'en=20pousser=20une=20nouvelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WorkoutScheduler.schedule() empilait : chaque envoi ajoutait un workout sans retirer le précédent → un ancien restait dans Exercice → Programmées et on risquait maxAllowedScheduledWorkoutCount. Ajout de removeAllWorkouts() avant schedule() (ne touche que nos workouts) : 1 envoi = la séance courante remplace la précédente. API vérifiée swiftinterface WorkoutKit (iOS 26.5 SDK). Co-Authored-By: Claude Opus 4.7 --- ios/App/App/CoachWorkoutKit.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ios/App/App/CoachWorkoutKit.swift b/ios/App/App/CoachWorkoutKit.swift index 1aa5915..136469c 100644 --- a/ios/App/App/CoachWorkoutKit.swift +++ b/ios/App/App/CoachWorkoutKit.swift @@ -280,6 +280,15 @@ public class CoachWorkoutKitPlugin: CAPPlugin, CAPBridgedPlugin { NSLog("[CoachWorkoutKit] requestAuthorization failed: \(error)") } + // 8bis. Efface les workouts déjà programmés par l'app avant d'en + // ajouter un nouveau. Sans ça, WorkoutScheduler EMPILE chaque envoi + // (un ancien workout reste visible dans Exercice → Programmées, et + // on finit par buter sur maxAllowedScheduledWorkoutCount). Modèle + // "1 envoi = la séance courante remplace la précédente". + // removeAllWorkouts() ne touche que NOS workouts programmés. + await WorkoutScheduler.shared.removeAllWorkouts() + NSLog("[CoachWorkoutKit] removeAllWorkouts (anciennes séances effacées)") + // 9. Schedule le workout. Schedule pour 1 minute dans le futur (vs // "now") pour s'assurer que la date n'est pas dans le passé au // moment où le système traite l'event (sinon il peut être ignoré).