diff --git a/ios/App/App/CoachIntents.swift b/ios/App/App/CoachIntents.swift index 3e78f9e..a1638b6 100644 --- a/ios/App/App/CoachIntents.swift +++ b/ios/App/App/CoachIntents.swift @@ -121,9 +121,13 @@ struct HydrationStatusIntent: AppIntent { if reste <= 0 { return .result(dialog: "\(LogDrinkIntent.enLitres(total)) : objectif atteint.") } - return .result(dialog: "\(LogDrinkIntent.enLitres(total)) sur " - + "\(LogDrinkIntent.enLitres(objectif)). Il reste " - + "\(LogDrinkIntent.enLitres(reste)).") + // ⚠️ UN SEUL littéral interpolé, jamais de concaténation. + // `IntentDialog` est `ExpressibleByStringInterpolation` : un littéral + // passe, mais l'opérateur `+` produit une `String`, que le compilateur + // refuse — « Cannot convert value of type 'String' to expected argument + // type 'IntentDialog' ». Erreur rencontrée au premier build, 25/09. + let phrase = "\(LogDrinkIntent.enLitres(total)) sur \(LogDrinkIntent.enLitres(objectif)). Il reste \(LogDrinkIntent.enLitres(reste))." + return .result(dialog: IntentDialog(stringLiteral: phrase)) } } @@ -148,8 +152,8 @@ struct TodaySessionIntent: AppIntent { func perform() async throws -> some IntentResult & ProvidesDialog { guard let today = CoachWidgetStore.load()?.asOf(Date()).today else { - return .result(dialog: "Je n'ai pas encore ta séance du jour. " - + "Ouvre l'app une fois.") + // Idem : pas de `+` dans un dialogue (cf. HydrationStatusIntent). + return .result(dialog: "Je n'ai pas encore ta séance du jour. Ouvre l'app une fois.") } let sport = Self.sportEnFrancais(today.sport) if today.done {