feat: add product selection step before meal planning
Inserts a new PlanProductsSheet as step 1 of the planning flow. Users see their current products as a multi-select checklist (all selected by default) before choosing the planning mode and dates. - Empty state explains the benefit and offers "Add products" CTA while always allowing "Plan without products" to skip - Selected product IDs flow through PlanMenuSheet → PlanDatePickerSheet → MenuService.generateForDates → backend - Backend: added ProductIDs field to generate-menu request body; uses ListForPromptByIDs when set, ListForPrompt otherwise - Backend: added Repository.ListForPromptByIDs (filtered SQL query) - All 12 ARB locale files updated with planProducts* keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ class PlanDatePickerSheet extends ConsumerStatefulWidget {
|
||||
super.key,
|
||||
required this.mode,
|
||||
required this.defaultStart,
|
||||
required this.selectedProductIds,
|
||||
});
|
||||
|
||||
final PlanMode mode;
|
||||
@@ -24,6 +25,10 @@ class PlanDatePickerSheet extends ConsumerStatefulWidget {
|
||||
/// planned date.
|
||||
final DateTime defaultStart;
|
||||
|
||||
/// Product IDs selected in the previous step. Empty list means the AI
|
||||
/// will use all of the user's products (default behaviour).
|
||||
final List<String> selectedProductIds;
|
||||
|
||||
@override
|
||||
ConsumerState<PlanDatePickerSheet> createState() =>
|
||||
_PlanDatePickerSheetState();
|
||||
@@ -107,6 +112,7 @@ class _PlanDatePickerSheetState extends ConsumerState<PlanDatePickerSheet> {
|
||||
await ref.read(planMenuServiceProvider).generateForDates(
|
||||
dates: dates,
|
||||
mealTypes: mealTypes,
|
||||
productIds: widget.selectedProductIds,
|
||||
);
|
||||
if (mounted) {
|
||||
Navigator.pop(context);
|
||||
|
||||
Reference in New Issue
Block a user