premium: configurar días y comidas de una semana concreta
Hasta ahora includeWeekends y activeMealTypes vivían solo en AppSettings y aplicaban a todo el calendario. WeekPlan puede ahora sobreescribirlos para su semana (includeWeekendsOverride / mealTypesOverrideRaw) y WeekSchedule resuelve qué manda en cada semana: su override si lo tiene, los ajustes globales si no. Todo lo que pintaba días y comidas —planificador, exports, compartir texto, widget, watch— pasa por settings.schedule(for:), así que una semana con fin de semana añadido o con desayuno activo se ve igual en todas partes. Crear o editar el override es premium; los ya guardados se respetan aunque la suscripción caduque, para no borrar comidas ya planificadas. La hoja avisa y pide confirmación cuando quitar un día o una comida se lleva por delante algo ya planificado. Refs #32 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013su1ttRiMeMYxkZJ1Y3246
This commit is contained in:
@@ -13,8 +13,12 @@ struct WeekCalendarView: View {
|
||||
var onTapEmptySlot: ((MealSlot) -> Void)?
|
||||
var onTapFilledSlot: ((MealSlot) -> Void)?
|
||||
|
||||
private var schedule: WeekSchedule {
|
||||
settings.schedule(for: plan)
|
||||
}
|
||||
|
||||
private var dayRange: ClosedRange<Int> {
|
||||
settings.includeWeekends ? 0...6 : 0...4
|
||||
schedule.dayRange
|
||||
}
|
||||
|
||||
private var days: [Int] {
|
||||
@@ -22,7 +26,7 @@ struct WeekCalendarView: View {
|
||||
}
|
||||
|
||||
private var mealTypes: [MealType] {
|
||||
settings.activeMealTypes
|
||||
schedule.mealTypes
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
@@ -50,6 +54,12 @@ struct WeekCalendarView: View {
|
||||
.onChange(of: settings.mealWindows) { _, _ in
|
||||
refreshDisplaySlots()
|
||||
}
|
||||
.onChange(of: plan.includeWeekendsOverride) { _, _ in
|
||||
refreshDisplaySlots()
|
||||
}
|
||||
.onChange(of: plan.mealTypesOverrideRaw) { _, _ in
|
||||
refreshDisplaySlots()
|
||||
}
|
||||
}
|
||||
|
||||
private var compactLayout: some View {
|
||||
|
||||
Reference in New Issue
Block a user