Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
delete newState.staging[item]
const stagingIndex = newState.stagingItems.indexOf(item)
newState.stagingItems.splice(stagingIndex, 1)
newState.checkedItems.splice(ref.length - 1 - index, 1)
} else {
// To Do: delete document in API (not staged)
}
})
return newState
}
case types.ADD_ITEM: {
const { id, schema, lang } = action
const newState = Object.assign({}, state)
addStaging(newState, id, STATUS.NEW, { id: { value: id } }, schema, lang)
addToHistoryChanges(newState, id, STATUS.NEW, null)
return newState
}
case types.UPDATE_ITEM: {
const { id, schema, changes, lang } = action
const newState = Object.assign({}, state)
const changesKey = Object.keys(changes)[0]
let hydratedChanges = changes
if (schema.properties[changesKey].type === 'object' && state.staging[id].document[changesKey]) {
// TO DO: make deep merge if field is object inside object inside object...
hydratedChanges[changesKey] = {
value: {
...state.staging[id].document[changesKey],
...changes[changesKey].value,
}
}
changes.forEach(change => {
addStaging(
newState,
change.id,
change.changes['id'] ? STATUS.NEW : null,
change.changes,
schema,
lang
)
})
return newState
const loadedItem = newState.source.find(
item => item.document && item.document.id === documentId
)
loadedItem.document = Object.assign(
{},
loadedItem.document,
stagingItem.document
)
delete newState.staging[documentId]
newState.stagingItems = newState.stagingItems.filter(
stagingId => stagingId !== documentId
)
continue
}
if (stagingItem.status === STATUS.NEW) {
const newItem = Object.assign(
{},
{ document: newState.staging[documentId].document },
{
status: STATUS.LOADED,
}
)
newState.source.push(newItem)
delete newState.staging[documentId]
newState.stagingItems = newState.stagingItems.filter(
stagingId => stagingId !== documentId
)
continue
}
if (stagingItem.status === STATUS.DELETED) {
Object.keys(state.items.staging).forEach(id => {
if (state.items.staging[id].status === STATUS.NEW) {
newItems.push(state.items.staging[id])
}
})
}