diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2025-08-23 22:29:28 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2025-08-23 22:29:28 +0100 |
| commit | ecc6a55aba7bb35fc778e7a53848396b88214151 (patch) | |
| tree | 1b37a2dc5f4594155114da1ae0c4529d20a4c548 /web/pages/agenda.vue | |
| parent | 8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (diff) | |
Add multiple conferences feature
Diffstat (limited to 'web/pages/agenda.vue')
| -rw-r--r-- | web/pages/agenda.vue | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/web/pages/agenda.vue b/web/pages/agenda.vue index 9b55c9b..5126d78 100644 --- a/web/pages/agenda.vue +++ b/web/pages/agenda.vue @@ -8,6 +8,10 @@ const scheduleStore = useScheduleStore(); const errorStore = useErrorStore(); const config = useRuntimeConfig(); +definePageMeta({ + middleware: ['logged-in', 'conference-selected'] +}) + const favouriteEvents = computed(() => { return scheduleStore.events.filter((event) => favouritesStore.isFavourite(event)); }); @@ -19,44 +23,28 @@ const refConfirmDeleteDialog = ref<typeof Dialog>(); const calendarAction = ref(false); -useFetch(config.public.baseURL + '/calendar', { - method: 'GET', - server: false, - lazy: true, - onResponse: ({ response }) => { - if (!response.ok) { - if (response.status !== 404) { - errorStore.setError(response._data.message || 'An unknown error occurred'); - } - } else if (response._data) { - calendarLink.value = (response._data as any).data.url; - } - calendarStatus.value = 'idle'; - }, -}); - function generateCalendar() { calendarAction.value = true; - useFetch(config.public.baseURL + '/calendar', { + $api(config.public.baseURL + '/calendar', { method: 'POST', server: false, lazy: true, - onResponseError: ({ response }) => { - errorStore.setError(response._data.message || 'An unknown error occurred'); - calendarAction.value = false; - }, onResponse: ({ response }) => { + calendarAction.value = false; + if (!response.ok) { + errorStore.setError(response._data.message || 'An unknown error occurred'); + return + } if (response._data) { calendarLink.value = (response._data as any).data.url; } - calendarAction.value = false; }, }); } function deleteCalendar() { calendarAction.value = true; - useFetch(config.public.baseURL + '/calendar', { + $api(config.public.baseURL + '/calendar', { method: 'DELETE', server: false, onResponseError: ({ response }) => { @@ -70,6 +58,24 @@ function deleteCalendar() { }); } +onMounted(() => { + $api(config.public.baseURL + '/calendar', { + method: 'GET', + server: false, + lazy: true, + onResponse: ({ response }) => { + calendarStatus.value = 'idle'; + if (!response.ok) { + if (response.status !== 404) { + errorStore.setError(response._data.message || 'Could not fetch calendar'); + } + } else if (response._data) { + calendarLink.value = (response._data as any).data.url; + } + }, + }); +}) + </script> <template> |
