diff options
Diffstat (limited to 'web/stores')
| -rw-r--r-- | web/stores/auth.ts | 12 | ||||
| -rw-r--r-- | web/stores/conference.ts | 18 | ||||
| -rw-r--r-- | web/stores/favourites.ts | 6 | ||||
| -rw-r--r-- | web/stores/login-options.ts | 10 | ||||
| -rw-r--r-- | web/stores/schedule.ts | 8 |
5 files changed, 38 insertions, 16 deletions
diff --git a/web/stores/auth.ts b/web/stores/auth.ts new file mode 100644 index 0000000..71ba5c0 --- /dev/null +++ b/web/stores/auth.ts @@ -0,0 +1,12 @@ +import { useLocalStorage } from "@vueuse/core"; +import { defineStore } from "pinia"; + +export const useAuthStore = defineStore('auth', () => { + const token = useLocalStorage('auth/token', null) + const username = useLocalStorage('auth/username', null) + const admin = useLocalStorage('auth/admin', false) + + const isLoggedIn = () => token.value != null + + return {token, username, admin, isLoggedIn} +}) diff --git a/web/stores/conference.ts b/web/stores/conference.ts new file mode 100644 index 0000000..2dbe82a --- /dev/null +++ b/web/stores/conference.ts @@ -0,0 +1,18 @@ +import { useLocalStorage } from "@vueuse/core"; +import { defineStore } from "pinia"; + +export const useConferenceStore = defineStore('conference', () => { + const id = useLocalStorage('conference/id', null) + const title = useLocalStorage('conference/title', null) + const venue = useLocalStorage('conference/venue', null) + const city = useLocalStorage('conference/city', null) + + const clear = () => { + id.value = null + title.value = null + venue.value = null + city.value = null + } + + return {id, title, venue, city, clear} +}) diff --git a/web/stores/favourites.ts b/web/stores/favourites.ts index 2bf7257..d502788 100644 --- a/web/stores/favourites.ts +++ b/web/stores/favourites.ts @@ -35,9 +35,5 @@ export const useFavouritesStore = defineStore('favourites', () => { }) } - const setStatus = (newStatus: 'idle' | 'pending') => { - status.value = newStatus - } - - return {favourites, status, setFavourites, addFavourite, removeFavourite, isFavourite, setStatus} + return {favourites, status, setFavourites, addFavourite, removeFavourite, isFavourite} }) diff --git a/web/stores/login-options.ts b/web/stores/login-options.ts index fd97a75..d66c833 100644 --- a/web/stores/login-options.ts +++ b/web/stores/login-options.ts @@ -10,13 +10,5 @@ export const useLoginOptionsStore = defineStore('loginOptions', () => { const loginOptions = ref([] as LoginOption[]) const status = ref('idle' as 'idle' | 'pending') - const setLoginOptions = (newLoginOptions: LoginOption[]) => { - loginOptions.value = newLoginOptions - } - - const setStatus = (newStatus: 'idle' | 'pending') => { - status.value = newStatus - } - - return {loginOptions, status, setLoginOptions, setStatus} + return {loginOptions, status} }) diff --git a/web/stores/schedule.ts b/web/stores/schedule.ts index d5f4b4c..83f274d 100644 --- a/web/stores/schedule.ts +++ b/web/stores/schedule.ts @@ -74,6 +74,7 @@ interface Link { export const useScheduleStore = defineStore('schedule', () => { const schedule = ref(null as Schedule | null) + const status = ref('idle' as 'idle' | 'pending') const events = ref([] as Event[]) const eventsPerDay = ref({} as { [key: string]: Event[] }) @@ -101,7 +102,9 @@ export const useScheduleStore = defineStore('schedule', () => { events.value.push(event) - event.track = tracks.value[event.track as unknown as string] + if (event.track) { + event.track = tracks.value[event.track as unknown as string] + } }) }) }) @@ -122,6 +125,7 @@ export const useScheduleStore = defineStore('schedule', () => { eventsPerTrack.value = {} events.value.forEach(event => { + if (!event.track) return if (!eventsPerTrack.value[event.track.name]) { eventsPerTrack.value[event.track.name] = [] } @@ -147,7 +151,7 @@ export const useScheduleStore = defineStore('schedule', () => { return schedule.value?.conference.start || 0 } - return {schedule, events, eventsPerDay, eventsPerTrack, setSchedule, isConferenceOngoing, isConferenceFinished, getStartDate} + return {schedule, events, eventsPerDay, eventsPerTrack, status, setSchedule, isConferenceOngoing, isConferenceFinished, getStartDate} }) function normalizeDates(event: Event, timeZone: string) { |
