diff --git a/aleksis/core/frontend/components/calendar/Calendar.vue b/aleksis/core/frontend/components/calendar/Calendar.vue
index 3baa57dea1f8ca0b2c77dccf7f5fbec29d1b5489..40bfbcd832278f4ab5f435be2a594a14ef45273e 100644
--- a/aleksis/core/frontend/components/calendar/Calendar.vue
+++ b/aleksis/core/frontend/components/calendar/Calendar.vue
@@ -356,6 +356,17 @@ export default {
         },
       });
     },
+    refresh() {
+      // Stop polling the query with old variables
+      this.$apollo.queries.calendar.stopPolling();
+      clearInterval(this.fetchMoreInterval);
+
+      this.fetchMoreCalendarEvents(this.queryVariables.start, this.queryVariables.end);
+
+      this.fetchMoreInterval = setInterval(() => {
+        this.fetchMoreCalendarEvents(this.queryVariables.start, this.queryVariables.end);
+      }, 30000);
+    },
     fetch() {
       this.title = this.$refs.calendar.title;
 
@@ -372,15 +383,7 @@ export default {
         this.$apollo.queries.calendar.startPolling(30000);
         this.fetchedDateRanges.push({ start: extendedStart, end: extendedEnd });
       } else if (!this.isFullyContained(extendedStart, extendedEnd)) {
-        // Stop polling the query with old variables
-        this.$apollo.queries.calendar.stopPolling();
-        clearInterval(this.fetchMoreInterval);
-
-        this.fetchMoreCalendarEvents(extendedStart, extendedEnd);
-
-        this.fetchMoreInterval = setInterval(() => {
-          this.fetchMoreCalendarEvents(extendedStart, extendedEnd);
-        }, 30000);
+        this.refresh();
 
         this.fetchedDateRanges.push({ start: extendedStart, end: extendedEnd });
       } else {