feat: added vuex store to cache data; feat: cached home data in the frontend

This commit is contained in:
Roberto Tonino
2020-08-23 00:39:31 +02:00
parent 972d1fe680
commit 9425569879
10 changed files with 154 additions and 16 deletions

17
src/store/index.js Normal file
View File

@@ -0,0 +1,17 @@
import Vuex from 'vuex'
import Vue from 'vue'
import home from '@/store/modules/home'
// Load Vuex
Vue.use(Vuex)
console.log(process.env.NODE_ENV)
// Create store
export default new Vuex.Store({
modules: {
home
},
strict: process.env.NODE_ENV !== 'production'
})

82
src/store/modules/home.js Normal file
View File

@@ -0,0 +1,82 @@
const state = {
homeData: {
albums: {
data: [],
total: 0
},
artists: {
data: [],
total: 0
},
playlists: {
data: [],
total: 0
},
podcasts: {
data: [],
total: 0
},
tracks: {
data: [],
total: 0
}
}
}
let homeDataCached = false
const actions = {
cacheHomeData({ commit }, payload) {
if (!homeDataCached) {
commit('SET_HOME_ALBUMS', payload.albums)
commit('SET_HOME_ARTISTS', payload.artists)
commit('SET_HOME_PLAYLISTS', payload.playlists)
commit('SET_HOME_PODCASTS', payload.podcasts)
commit('SET_HOME_TRACKS', payload.tracks)
homeDataCached = true
}
}
}
const getters = {
getHomeData: store => store.homeData,
getHomeAlbums: store => store.homeData.albums,
getHomeArtists: store => store.homeData.artists,
getHomePlaylists: store => store.homeData.playlists,
getHomePodcasts: store => store.homeData.podcasts,
getHomeTracks: store => store.homeData.tracks
}
const mutations = {
SET_HOME_DATA: (state, payload) => {
state.homeData = payload
},
SET_HOME_ALBUMS: (state, payload) => {
state.homeData.albums.data = payload.data
state.homeData.albums.total = payload.total
},
SET_HOME_ARTISTS: (state, payload) => {
state.homeData.artists.data = payload.data
state.homeData.artists.total = payload.total
},
SET_HOME_PLAYLISTS: (state, payload) => {
state.homeData.playlists.data = payload.data
state.homeData.playlists.total = payload.total
},
SET_HOME_PODCASTS: (state, payload) => {
state.homeData.podcasts.data = payload.data
state.homeData.podcasts.total = payload.total
},
SET_HOME_TRACKS: (state, payload) => {
state.homeData.tracks.data = payload.data
state.homeData.tracks.total = payload.total
}
}
export default {
state,
actions,
getters,
mutations
}