40 lines
1.1 KiB
TypeScript
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
|
|
},
|
|
},
|
|
})
|