aboutsummaryrefslogtreecommitdiffstats
path: root/web/stores
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
committerLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
commitecc6a55aba7bb35fc778e7a53848396b88214151 (patch)
tree1b37a2dc5f4594155114da1ae0c4529d20a4c548 /web/stores
parent8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (diff)
Add multiple conferences feature
Diffstat (limited to 'web/stores')
-rw-r--r--web/stores/auth.ts12
-rw-r--r--web/stores/conference.ts18
-rw-r--r--web/stores/favourites.ts6
-rw-r--r--web/stores/login-options.ts10
-rw-r--r--web/stores/schedule.ts8
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) {