FEAT: evilspins v3 :: tracks info in player
This commit is contained in:
51
stores/dataStore.ts
Normal file
51
stores/dataStore.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import type { Compilation, Artist, Track } from '~/types/types'
|
||||
|
||||
// stores/data.ts
|
||||
import { defineStore } from 'pinia'
|
||||
|
||||
export const useDataStore = defineStore('data', {
|
||||
state: () => ({
|
||||
compilations: [] as Compilation[], // Store your compilation data here
|
||||
artists: [] as Artist[], // Store artist data here
|
||||
tracks: [] as Track[], // Store track data here
|
||||
isLoaded: false, // To track if data is already loaded
|
||||
}),
|
||||
|
||||
actions: {
|
||||
async loadData() {
|
||||
if (this.isLoaded) return // Avoid re-fetching if already loaded
|
||||
|
||||
// Fetch your data once (e.g., from an API or local JSON)
|
||||
const { data: compilations } = await useFetch('/api/compilations')
|
||||
const { data: artists } = await useFetch('/api/artists')
|
||||
const { data: tracks } = await useFetch('/api/tracks')
|
||||
|
||||
// Set the data in the store
|
||||
this.compilations = compilations.value
|
||||
this.artists = artists.value
|
||||
this.tracks = tracks.value
|
||||
this.isLoaded = true
|
||||
}
|
||||
},
|
||||
|
||||
getters: {
|
||||
// Obtenir tous les compilations
|
||||
getAllCompilations: (state) => state.compilations,
|
||||
getCompilationById: (state) => {
|
||||
return (id: string) => {
|
||||
return state.compilations.find(compilation => compilation.id === id)
|
||||
}
|
||||
},
|
||||
// Obtenir toutes les pistes d'une compilation donnée
|
||||
getTracksByCompilationId: (state) => (compilationId: string) => {
|
||||
return state.tracks.filter(track => track.compilation === compilationId)
|
||||
},
|
||||
// Filtrer les artistes selon certains critères
|
||||
getArtistById: (state) => (id: number) => state.artists.find(artist => artist.id === id),
|
||||
|
||||
// Obtenir toutes les pistes d'un artiste donné
|
||||
getTracksByArtistId: (state) => (artistId: string) => {
|
||||
return state.tracks.filter(track => track.artistId === artistId)
|
||||
},
|
||||
},
|
||||
})
|
Reference in New Issue
Block a user