From 63a4d4c801ce3f03536a8e6ed9d5efcae063c833 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:41:34 -0500 Subject: [PATCH 1/2] fix: Preserve "Completed On" Date In Checked Shopping List Items (#5665) --- frontend/pages/shopping-lists/[id].vue | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/frontend/pages/shopping-lists/[id].vue b/frontend/pages/shopping-lists/[id].vue index 293c4b08d..8188e7326 100644 --- a/frontend/pages/shopping-lists/[id].vue +++ b/frontend/pages/shopping-lists/[id].vue @@ -707,7 +707,7 @@ export default defineNuxtComponent({ } }); if (hasChanged) { - updateListItems(); + updateUncheckedListItems(); } } @@ -727,7 +727,9 @@ export default defineNuxtComponent({ } }); if (hasChanged) { - updateListItems(); + listItems.unchecked = [...listItems.unchecked, ...listItems.checked]; + listItems.checked = []; + updateUncheckedListItems(); } } @@ -1051,8 +1053,13 @@ export default defineNuxtComponent({ .sort(sortCheckedItems); } + // Update the item if it's checked, otherwise updateUncheckedListItems will handle it + if (item.checked) { + shoppingListItemActions.updateItem(item); + } + updateListItemOrder(); - updateListItems(); + updateUncheckedListItems(); } function deleteListItem(item: ShoppingListItemOut) { @@ -1144,7 +1151,7 @@ export default defineNuxtComponent({ // since the user has manually reordered the list, we should preserve this order preserveItemOrder.value = true; - updateListItems(); + updateUncheckedListItems(); } function updateIndexUncheckedByLabel(labelName: string, labeledUncheckedItems: ShoppingListItemOut[]) { @@ -1167,7 +1174,7 @@ export default defineNuxtComponent({ // save changes listItems.unchecked = allUncheckedItems; listItems.checked = shoppingList.value?.listItems?.filter(item => item.checked) || []; - updateListItems(); + updateUncheckedListItems(); } function deleteListItems(items: ShoppingListItemOut[]) { @@ -1187,27 +1194,23 @@ export default defineNuxtComponent({ refresh(); } - function updateListItems() { + function updateUncheckedListItems() { if (!shoppingList.value?.listItems) { return; } - // Set Position - shoppingList.value.listItems = listItems.unchecked.concat(listItems.checked).map((itm: ShoppingListItemOut, idx: number) => { - itm.position = idx; - return itm; - }); - - shoppingList.value.listItems.forEach((item) => { + // Set position for unchecked items + listItems.unchecked.forEach((item: ShoppingListItemOut, idx: number) => { + item.position = idx; shoppingListItemActions.updateItem(item); }); + refresh(); } return { ...toRefs(state), addRecipeReferenceToList, - updateListItems, allLabels, contextMenu, contextMenuAction, From e1a04ba673c1ab95014e328ea43c3c96cdb8a321 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:57:20 -0500 Subject: [PATCH 2/2] fix: Recipe Timeline Not Filtering (#5666) --- frontend/lib/api/user/recipes/recipe.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frontend/lib/api/user/recipes/recipe.ts b/frontend/lib/api/user/recipes/recipe.ts index b89a4eb51..c2e923c2f 100644 --- a/frontend/lib/api/user/recipes/recipe.ts +++ b/frontend/lib/api/user/recipes/recipe.ts @@ -219,10 +219,7 @@ export class RecipeAPI extends BaseCRUDAPI { async getAllTimelineEvents(page = 1, perPage = -1, params = {} as any) { return await this.requests.get>( - routes.recipesTimelineEvent, - { - params: { page, perPage, ...params }, - }, + routes.recipesTimelineEvent, { page, perPage, ...params }, ); }