aboutsummaryrefslogtreecommitdiffstats
path: root/web/composables/fetch-schedule.ts
blob: 5e919544edcedc15d7611df023342d8d317cf806 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { useConferenceStore } from "~/stores/conference";
import { expireAuth } from "./expire-auth";

export default async function() {
  const conferenceStore = useConferenceStore()
  const scheduleStore = useScheduleStore();
  const errorStore = useErrorStore();
  const config = useRuntimeConfig();

  scheduleStore.status = 'pending'
  
  return $api(config.public.baseURL + '/conference/' + conferenceStore.id, {
    method: 'GET',
    onResponse: ({ response }) => {
      if (!response.ok) {
        if (response.status === 401) {
          expireAuth()
          return
        } else {
          errorStore.setError(response._data.message || 'An unknown error occurred');
        }
      }

      if (response._data) {
        let schedule = (response._data as any).data.schedule
        scheduleStore.setSchedule(schedule);

        conferenceStore.venue = schedule.conference.venue
        conferenceStore.title = schedule.conference.title
        conferenceStore.city = schedule.conference.city

        scheduleStore.status = 'idle'
      }
    },
  }).catch(() => {
    // todo do this better
    errorStore.setError('An unknown error occurred');
  });
}