1
1
import Vue from 'vue'
2
2
import Vuex from 'vuex'
3
+ import axios from 'axios'
3
4
4
5
Vue . use ( Vuex )
5
6
@@ -19,25 +20,42 @@ const store = new Vuex.Store({
19
20
}
20
21
} ,
21
22
mutations : {
22
- fetch ( state , todos ) {
23
+ SET_TODOS ( state , todos ) {
23
24
state . todos = todos
24
25
} ,
25
- add ( state , todo ) {
26
+ ADD_TODO ( state , todo ) {
26
27
state . todos . push ( todo )
27
28
} ,
28
- remove ( state , todo ) {
29
+ REMOVE_TODO ( state , todo ) {
29
30
var i = state . todos . indexOf ( todo )
30
31
state . todos . splice ( i , 1 )
31
32
} ,
32
- removeCompleted ( state , todos ) {
33
- state . todos = todos
34
- } ,
35
- allDone ( state ) {
36
- var value = state . todos . filter ( todo => todo . completed ) . length === state . todos . length
33
+ FILTER_TODOS ( state , value ) {
37
34
state . todos . forEach ( ( todo ) => {
38
35
todo . completed = ! value
39
36
} )
40
37
}
38
+ } ,
39
+ actions : {
40
+ addTodo ( { commit } , todo ) {
41
+ commit ( 'ADD_TODO' , todo )
42
+ } ,
43
+ setTodos ( { commit } , todos ) {
44
+ commit ( 'SET_TODOS' , todos )
45
+ } ,
46
+ removeTodo ( { commit } , todo ) {
47
+ commit ( 'REMOVE_TODO' , todo )
48
+ } ,
49
+ allDone ( { state, commit } ) {
50
+ var value = state . todos . filter ( todo => todo . completed ) . length === state . todos . length
51
+ commit ( 'FILTER_TODOS' , value )
52
+ } ,
53
+ saveTodos ( { state } ) {
54
+ axios . put ( '/api/todos' , { todos : state . todos } )
55
+ } ,
56
+ nuxtServerInit ( { commit } , { req } ) {
57
+ commit ( 'SET_TODOS' , req . session . todos || [ ] )
58
+ }
41
59
}
42
60
} )
43
61
0 commit comments