diff --git a/lib/screens/menu_browse_screen.dart b/lib/screens/menu_browse_screen.dart index a4397b0..45182ed 100644 --- a/lib/screens/menu_browse_screen.dart +++ b/lib/screens/menu_browse_screen.dart @@ -1165,6 +1165,7 @@ class _MenuBrowseScreenState extends State { final realChildItemId = _decodeVirtualId(child.itemId); if (isSelected) { + // This item is directly selected - add it final cart = await Api.setLineItem( orderId: orderId, parentOrderLineItemId: parentOrderLineItemId, @@ -1186,21 +1187,13 @@ class _MenuBrowseScreenState extends State { ); } } else if (hasSelectedDescendants) { - final cart = await Api.setLineItem( - orderId: orderId, - parentOrderLineItemId: parentOrderLineItemId, - itemId: child.itemId, - isSelected: true, - ); - - final childLineItem = cart.lineItems.lastWhere( - (li) => li.itemId == realChildItemId && li.parentOrderLineItemId == parentOrderLineItemId && !li.isDeleted, - orElse: () => throw StateError('Failed to add item'), - ); - + // This item is NOT selected, but has selected descendants + // DON'T add this intermediate group - just recurse to add the actual selections + // The selections will be added directly under the current parent + // This matches how attachDefaultChildren works on the server await _addModifiersRecursively( orderId, - childLineItem.orderLineItemId, + parentOrderLineItemId, // Keep the same parent - don't create intermediate node child.itemId, selectedItemIds, );