vbv/client/src/stores/mediaCenter.ts

40 lines
1.1 KiB
TypeScript

import { defineStore } from 'pinia'
import { itGet } from '@/fetchHelpers'
import type { MediaLibraryPage } from '@/types'
export type MediaCenterStoreState = {
mediaCenterPage: MediaLibraryPage | undefined
selectedLearningPath: { id: number; name: string }
availableLearningPaths: { id: number; name: string }[]
}
export const useMediaCenterStore = defineStore({
id: 'mediaCenter',
state: () => {
return {
mediaCenterPage: undefined,
selectedLearningPath: { id: 1, name: 'Alle Lehrgänge' },
availableLearningPaths: [
{ id: 1, name: 'Alle Lehrgänge' },
{ id: 2, name: 'Versicherungsvermittler/in' },
],
} as MediaCenterStoreState
},
getters: {},
actions: {
async loadMediaCenterPage(slug: string, reload = false) {
if (this.mediaCenterPage && !reload) {
return this.mediaCenterPage
}
const mediaCenterPageData = await itGet(`/api/course/page/${slug}/`)
if (!mediaCenterPageData) {
throw `No mediaCenterPageData found with: ${slug}`
}
this.mediaCenterPage = mediaCenterPageData
return this.mediaCenterPage
},
},
})