-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
50 lines (48 loc) · 1.41 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'
import api from "~/modules/api.js"
const createStore = () => {
return new Vuex.Store({
state: {
query: 'comedy',
movie: {},
movies: []
},
plugins: [createPersistedState()],
mutations: {
setMovies: (state, movies) => {
state.movies = movies
},
setCurrentMovie: (state, movie) => {
state.movie = movie
},
setQuery: (state, query) => {
state.query = query
}
},
actions: {
async getMovies ({commit}) {
let {data} = await api.search(this.state.query)
commit('setMovies', data.Search)
},
async getMovie ({commit, store}, id) {
let {data} = await api.getMovie(id);
commit('setCurrentMovie', data)
},
async getQuery ({commit}, query) {
commit('setQuery', query)
},
async nuxtServerInit ({commit}, {store, isClient, isServer, route, params}) {
if (isServer) {
let {data} = await api.search(this.state.query)
commit('setMovies', data.Search)
}
if (isServer && route.name === 'movie' && params.id) {
let {data} = await api.getMovie(params.id);
commit('setCurrentMovie', data)
}
}
}
})
}
export default createStore