shopping load with pagination

This commit is contained in:
vabene1111
2025-01-01 13:44:07 +01:00
parent 34f337290c
commit f97d8ffdfd

View File

@@ -191,23 +191,13 @@ export const useShoppingStore = defineStore(_STORE_ID, () => {
autoSyncLastTimestamp.value = new Date(); autoSyncLastTimestamp.value = new Date();
let api = new ApiApi() let api = new ApiApi()
let requestParameters = {pageSize: 200} as ApiShoppingListEntryListRequest let requestParameters = {pageSize: 50, page: 1} as ApiShoppingListEntryListRequest
if (mealPlanId) { if (mealPlanId) {
requestParameters.mealplan = mealPlanId requestParameters.mealplan = mealPlanId
} }
api.apiShoppingListEntryList(requestParameters).then((r) => { entries.value = new Map<number, ShoppingListEntry>
entries.value = new Map<number, ShoppingListEntry> recLoadShoppingListEntries(requestParameters)
// TODO properly load pages
r.results.forEach((e) => {
entries.value.set(e.id!, e)
})
currentlyUpdating.value = false
initialized.value = true
}).catch((err) => {
currentlyUpdating.value = false
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
})
api.apiSupermarketCategoryList().then(r => { api.apiSupermarketCategoryList().then(r => {
supermarketCategories.value = r.results supermarketCategories.value = r.results
@@ -223,6 +213,29 @@ export const useShoppingStore = defineStore(_STORE_ID, () => {
} }
} }
/**
* recursively load shopping list entries from paginated api
* @param requestParameters
*/
function recLoadShoppingListEntries(requestParameters: ApiShoppingListEntryListRequest){
let api = new ApiApi()
api.apiShoppingListEntryList(requestParameters).then((r) => {
r.results.forEach((e) => {
entries.value.set(e.id!, e)
})
if(r.next){
requestParameters.page = requestParameters.page + 1
recLoadShoppingListEntries(requestParameters)
} else {
currentlyUpdating.value = false
initialized.value = true
}
}).catch((err) => {
currentlyUpdating.value = false
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
})
}
/** /**
* perform auto sync request to special endpoint returning only entries changed since last auto sync * perform auto sync request to special endpoint returning only entries changed since last auto sync
*/ */