@@ -7,14 +7,14 @@ import {actions as modalActions} from '#/main/core/layout/modal/actions'
7
7
import { tex } from '#/main/core/translation'
8
8
import { MODAL_MESSAGE } from '#/main/core/layout/modal'
9
9
import { denormalize } from './../normalizer'
10
+ import forOwn from 'lodash/forOwn'
10
11
11
12
export const ITEM_CREATE = 'ITEM_CREATE'
12
13
export const ITEM_UPDATE = 'ITEM_UPDATE'
13
14
export const ITEM_DELETE = 'ITEM_DELETE'
14
15
export const ITEM_MOVE = 'ITEM_MOVE'
15
16
export const ITEM_HINTS_UPDATE = 'ITEM_HINTS_UPDATE'
16
17
export const ITEM_DETAIL_UPDATE = 'ITEM_DETAIL_UPDATE'
17
- export const ITEMS_DELETE = 'ITEMS_DELETE'
18
18
export const ITEMS_IMPORT = 'ITEMS_IMPORT'
19
19
export const OBJECT_NEXT = 'OBJECT_NEXT'
20
20
export const OBJECT_SELECT = 'OBJECT_SELECT'
@@ -24,6 +24,7 @@ export const STEP_CREATE = 'STEP_CREATE'
24
24
export const STEP_DELETE = 'STEP_DELETE'
25
25
export const STEP_UPDATE = 'STEP_UPDATE'
26
26
export const STEP_MOVE = 'STEP_MOVE'
27
+ export const STEP_ITEM_DELETE = 'STEP_ITEM_DELETE'
27
28
export const QUIZ_UPDATE = 'QUIZ_UPDATE'
28
29
export const HINT_ADD = 'HINT_ADD'
29
30
export const HINT_CHANGE = 'HINT_CHANGE'
@@ -55,6 +56,7 @@ export const quizChangeActions = [
55
56
STEP_MOVE ,
56
57
STEP_DELETE ,
57
58
STEP_UPDATE ,
59
+ STEP_ITEM_DELETE ,
58
60
QUIZ_UPDATE ,
59
61
HINT_ADD ,
60
62
HINT_CHANGE ,
@@ -72,8 +74,7 @@ export const quizChangeActions = [
72
74
export const actions = { }
73
75
74
76
actions . deleteStep = makeActionCreator ( STEP_DELETE , 'id' )
75
- actions . deleteItem = makeActionCreator ( ITEM_DELETE , 'id' , 'stepId' )
76
- actions . deleteItems = makeActionCreator ( ITEMS_DELETE , 'ids' )
77
+ actions . deleteItem = makeActionCreator ( ITEM_DELETE , 'id' )
77
78
actions . moveItem = makeActionCreator ( ITEM_MOVE , 'id' , 'swapId' , 'stepId' )
78
79
actions . moveStep = makeActionCreator ( STEP_MOVE , 'id' , 'swapId' )
79
80
actions . nextObject = makeActionCreator ( OBJECT_NEXT , 'object' )
@@ -116,11 +117,42 @@ actions.deleteStepAndItems = id => {
116
117
invariant ( id , 'id is mandatory' )
117
118
return ( dispatch , getState ) => {
118
119
dispatch ( actions . nextObject ( select . nextObject ( getState ( ) ) ) )
119
- dispatch ( actions . deleteItems ( getState ( ) . steps [ id ] . items . slice ( ) ) )
120
+ //I'll gave to double check that
121
+ getState ( ) . steps [ id ] . items . forEach ( item => {
122
+ dispatch ( actions . deleteStepItem ( item , id ) )
123
+ } )
124
+
120
125
dispatch ( actions . deleteStep ( id ) )
121
126
}
122
127
}
123
128
129
+ actions . deleteStepItem = ( id , stepId ) => {
130
+ invariant ( id , 'id is mandatory' )
131
+ invariant ( stepId , 'stepId is mandatory' )
132
+
133
+ return ( dispatch , getState ) => {
134
+ const state = getState ( )
135
+ const steps = select . steps ( state )
136
+ let countItems = 0
137
+
138
+ forOwn ( steps , step => {
139
+ step . items . forEach ( item => {
140
+ countItems += item === id ? 1 : 0
141
+ } )
142
+ } )
143
+
144
+ dispatch ( {
145
+ type : STEP_ITEM_DELETE ,
146
+ id,
147
+ stepId
148
+ } )
149
+
150
+ if ( countItems <= 1 ) {
151
+ dispatch ( actions . deleteItem ( id ) )
152
+ }
153
+ }
154
+ }
155
+
124
156
actions . save = ( ) => {
125
157
return ( dispatch , getState ) => {
126
158
const state = getState ( )
@@ -218,4 +250,4 @@ actions.saveItemObjectFile = (itemId, objectId, file) => {
218
250
}
219
251
} )
220
252
}
221
- }
253
+ }
0 commit comments