diff --git a/src/store/timetable.ts b/src/store/timetable.ts index e604e7d..5a89604 100644 --- a/src/store/timetable.ts +++ b/src/store/timetable.ts @@ -51,15 +51,8 @@ export const useTimetableStore = defineStore('timetable', () => { function setDay(date: Date, eventList: Event[]) { const key = stringifyDate(date); - - if (!days.value.has(key)) { - days.value.set(key, []); - } - - for (const e of eventList) { - setEvents(eventList); - days.value.get(key)?.push(e); - } + setEvents(eventList); + days.value.set(key, [...eventList]); } function setLecturerEvents(lecturerId: number, eventList: Event[]) { diff --git a/vitePwaOptions.ts b/vitePwaOptions.ts index 3000101..32c2439 100644 --- a/vitePwaOptions.ts +++ b/vitePwaOptions.ts @@ -1,6 +1,45 @@ -import { VitePWAOptions } from 'vite-plugin-pwa'; -import { vitePwaManifest } from './vitePwaManifest'; - -export const vitePWAconfig: Partial = { - manifest: vitePwaManifest, -}; +import { VitePWAOptions } from 'vite-plugin-pwa'; +import { vitePwaManifest } from './vitePwaManifest'; + +export const vitePWAconfig: Partial = { + manifest: vitePwaManifest, + workbox: { + runtimeCaching: [ + { + urlPattern: /^https:\/\/fonts\.googleapis\.com\/.*/i, + handler: 'StaleWhileRevalidate', + options: { + cacheName: 'google-fonts-stylesheets', + }, + }, + { + urlPattern: /^https:\/\/fonts\.gstatic\.com\/.*/i, + handler: 'CacheFirst', + options: { + cacheName: 'google-fonts-webfonts', + expiration: { + maxEntries: 30, + maxAgeSeconds: 60 * 60 * 24 * 365, + }, + cacheableResponse: { + statuses: [0, 200], + }, + }, + }, + { + urlPattern: /^https:\/\/api(?:\.test)?\.profcomff\.com\/timetable\/.*/i, + handler: 'StaleWhileRevalidate', + options: { + cacheName: 'api-timetable', + expiration: { + maxEntries: 30, + maxAgeSeconds: 60 * 60 * 24 * 30, + }, + cacheableResponse: { + statuses: [0, 200], + }, + }, + }, + ], + }, +};