Skip to content

Commit 613399c

Browse files
committed
Unlink slots when deleting primitive if it has pipes
1 parent 7f81197 commit 613399c

File tree

2 files changed

+55
-12
lines changed

2 files changed

+55
-12
lines changed

src/actions/workspaceActions.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { bothSlotsSelected } from '../utils'
22

33
import {
44
BRICK,
5+
PRIMITIVE,
56
SELECTABLE_PIPE
67
} from '../utils/componentNames'
78

@@ -218,6 +219,26 @@ export const removeElement = (elementId) => {
218219
dispatch(_unlinkSlots(element))
219220
}
220221

222+
if(element.componentName == PRIMITIVE) {
223+
const slotId = Object.keys(element.outputSlots)[0]
224+
const slot = element.outputSlots[slotId]
225+
226+
slot.outputElementIds.forEach((outputElementId) => {
227+
dispatch(
228+
_unlinkSlots({
229+
input: {
230+
elementId: element.id,
231+
slotId
232+
},
233+
output: {
234+
elementId: outputElementId,
235+
sourceElementId: element.id
236+
}
237+
})
238+
)
239+
})
240+
}
241+
221242
if(element.componentName == BRICK) {
222243
Object.keys(element.inputSlots).forEach((slotId) => {
223244
const slot = element.inputSlots[slotId]

src/reducers/workspace/updateElementReducer.js

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export const unlinkSlots = (workspace, payload) => {
181181
const index = outputSlot.outputElementIds.indexOf(output.elementId)
182182

183183
const outputElement = workspace.entities[output.elementId]
184-
const newOutputElement = _removeSlotValue(outputElement, output.slotId)
184+
const newOutputElement = _removeSlotValue(outputElement, output)
185185

186186
return Object.assign({}, workspace, {
187187
entities: {
@@ -204,19 +204,41 @@ export const unlinkSlots = (workspace, payload) => {
204204
})
205205
}
206206

207-
const _removeSlotValue = (element, slotId) => {
207+
const _removeSlotValue = (element, output) => {
208208
var slots = {}
209209

210-
if(element.componentName == MAIN_BRICK) {
211-
Object.assign(slots, {
212-
outputSlots: element.outputSlots
213-
})
214-
delete slots.outputSlots[slotId]['value']
215-
} else {
216-
Object.assign(slots, {
217-
inputSlots: element.inputSlots
218-
})
219-
delete slots.inputSlots[slotId]['value']
210+
if(output.slotId) {
211+
if(element.componentName == MAIN_BRICK) {
212+
Object.assign(slots, { outputSlots: element.outputSlots })
213+
214+
delete slots.outputSlots[output.slotId]['value']
215+
} else {
216+
Object.assign(slots, { inputSlots: element.inputSlots })
217+
218+
delete slots.inputSlots[output.slotId]['value']
219+
}
220+
} else if(output.sourceElementId) {
221+
if(element.componentName == MAIN_BRICK) {
222+
Object.assign(slots, { outputSlots: element.outputSlots })
223+
224+
Object.keys(element.outputSlots).forEach((slotId) => {
225+
const slot = element.outputSlots[slotId]
226+
227+
if(slot.value && slot.value.elementId == output.sourceElementId) {
228+
delete slots.outputSlots[slotId]['value']
229+
}
230+
})
231+
} else {
232+
Object.assign(slots, { inputSlots: element.inputSlots })
233+
234+
Object.keys(element.inputSlots).forEach((slotId) => {
235+
const slot = element.inputSlots[slotId]
236+
237+
if(slot.value && slot.value.elementId == output.sourceElementId) {
238+
delete slots.inputSlots[slotId]['value']
239+
}
240+
})
241+
}
220242
}
221243

222244
return Object.assign(element, { ...slots })

0 commit comments

Comments
 (0)