From 2f27cf4deba89153010c044f30cc150b46dc4764 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 8 Sep 2025 21:13:33 +0200 Subject: [PATCH] fixed meal plan loading --- vue3/src/stores/MealPlanStore.ts | 51 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/vue3/src/stores/MealPlanStore.ts b/vue3/src/stores/MealPlanStore.ts index 00f904b3f..e9d57f707 100644 --- a/vue3/src/stores/MealPlanStore.ts +++ b/vue3/src/stores/MealPlanStore.ts @@ -66,36 +66,37 @@ export const useMealPlanStore = defineStore(_STORE_ID, () => { currently_updating.value = [from_date, to_date] // certainly no perfect check but better than nothing loading.value = true - const api = new ApiApi() - return api.apiMealPlanList({ - fromDate: DateTime.fromJSDate(from_date).toISODate() as string, - toDate: DateTime.fromJSDate(to_date).toISODate() as string, - pageSize: 100 - }).then(r => { - let foundIds: number[] = [] - r.results.forEach((p) => { - plans.value.set(p.id!, p) - foundIds.push(p.id!) - }) - - // delete entries that no longer exist - plans.value.forEach(p => { - if (!foundIds.includes(p.id!)) { - plans.value.delete(p.id!) - } - }) - - currently_updating.value = [new Date(0), new Date(0)] - }).catch((err) => { - useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err) - }).finally(() => { - loading.value = false - }) + plans.value = new Map() + return recLoadMealPlans(from_date, to_date) } return new Promise(() => { }) } + function recLoadMealPlans(from_date: Date, to_date: Date, page: number = 1): Promise { + const api = new ApiApi() + return api.apiMealPlanList({ + fromDate: DateTime.fromJSDate(from_date).toISODate() as string, + toDate: DateTime.fromJSDate(to_date).toISODate() as string, + pageSize: 100, + page: page + }).then(r => { + r.results.forEach((p) => { + plans.value.set(p.id!, p) + }) + + if (r.next) { + return recLoadMealPlans(from_date, to_date, page + 1) + } else { + loading.value = false + currently_updating.value = [new Date(0), new Date(0)] + } + + }).catch((err) => { + useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err) + }) + } + function createOrUpdate(object: MealPlan) { if (object.id == undefined) { return createObject(object)