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