koel/resources/assets/js/stores/overviewStore.ts

51 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-06-10 10:47:46 +00:00
import { reactive } from 'vue'
import { httpService } from '@/services'
import { songStore } from '@/stores/songStore'
import { albumStore } from '@/stores/albumStore'
import { artistStore } from '@/stores/artistStore'
import { recentlyPlayedStore } from '@/stores'
export const overviewStore = {
state: reactive({
recentlyPlayed: [],
recentlyAddedSongs: [],
recentlyAddedAlbums: [],
mostPlayedSongs: [],
mostPlayedAlbums: [],
2022-07-30 15:08:20 +00:00
mostPlayedArtists: [],
loading: false
2022-06-10 10:47:46 +00:00
}),
async init () {
2022-07-30 15:08:20 +00:00
this.state.loading = true
2022-06-10 10:47:46 +00:00
const resource = await httpService.get<{
most_played_songs: Song[],
most_played_albums: Album[],
most_played_artists: Artist[],
recently_added_songs: Song[],
recently_added_albums: Album[],
recently_played_songs: Song[],
}>('overview')
2022-07-22 22:41:22 +00:00
songStore.syncWithVault([...resource.most_played_songs, ...resource.recently_added_songs])
albumStore.syncWithVault([...resource.most_played_albums, ...resource.recently_added_albums])
2022-06-10 10:47:46 +00:00
artistStore.syncWithVault(resource.most_played_artists)
recentlyPlayedStore.excerptState.songs = songStore.syncWithVault(resource.recently_played_songs)
this.refresh()
2022-07-30 15:08:20 +00:00
this.state.loading = false
2022-06-10 10:47:46 +00:00
},
refresh () {
this.state.mostPlayedSongs = songStore.getMostPlayed(7)
this.state.mostPlayedAlbums = albumStore.getMostPlayed(6)
this.state.mostPlayedArtists = artistStore.getMostPlayed(6)
this.state.recentlyAddedSongs = songStore.getRecentlyAdded(9)
2022-06-10 10:47:46 +00:00
this.state.recentlyAddedAlbums = albumStore.getRecentlyAdded(6)
this.state.recentlyPlayed = recentlyPlayedStore.excerptState.songs
}
}