From 357534292d81695b3f5c29e6b51299b4289ab1df Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Wed, 27 Mar 2024 13:02:51 +0100 Subject: [PATCH] Remove render loop caused by docsByDay -> no more docsByDay state in component --- .../frontend/components/coursebook/Coursebook.vue | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index cfe4dff08..823a67020 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -182,7 +182,7 @@ export default { }, groupDocsByDay(docs) { // => {dt: [dt doc ...] ...} - this.docsByDay = docs.reduce((byDay, doc) => { + const docsByDay = docs.reduce((byDay, doc) => { // This works with dummy. Does actual doc have dateStart instead? const day = DateTime.fromISO(doc.datetimeStart).startOf("day"); byDay[day] ??= [day]; @@ -190,9 +190,9 @@ export default { return byDay; }, {}); // => [[dt doc ...] ...] - return Object.keys(this.docsByDay) + return Object.keys(docsByDay) .sort() - .map((key) => this.docsByDay[key]); + .map((key) => docsByDay[key]); // sorting is necessary since backend can send docs unordered }, debounce(fn, delay) { @@ -299,9 +299,10 @@ export default { if (!this.knownDates[date]) { console.log(this.lastQuery); console.log('unknown date', date.toISODate()); + console.log(this.knownDates); // find missing & fetch missing range const missing = this.dateRange(date) - .filter((ts) => !this.docsByDay[ts]); + .filter((ts) => !this.knownDates[ts]); // ask for first to last this.lastQuery.fetchMore({ variables: { -- GitLab