workspaceContent.js 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {
  2. SET,
  3. UPDATE,
  4. WORKSPACE,
  5. FOLDER
  6. } from '../action-creator.sync.js'
  7. export default function workspace (state = [], action) {
  8. switch (action.type) {
  9. case `${SET}/${WORKSPACE}/Content`:
  10. return action.workspaceContent.map(wsc => ({
  11. id: wsc.content_id,
  12. label: wsc.label,
  13. slug: wsc.slug,
  14. type: wsc.content_type,
  15. idWorkspace: wsc.workspace_id,
  16. isArchived: wsc.is_archived,
  17. parentId: wsc.parent_id,
  18. isDeleted: wsc.is_deleted,
  19. showInUi: wsc.show_in_ui,
  20. statusSlug: wsc.status,
  21. subContentTypeSlug: wsc.sub_content_type_slug
  22. }))
  23. case `${UPDATE}/${WORKSPACE}/Filter`: // not used anymore ?
  24. return {...state, filter: action.filterList}
  25. case `${SET}/${WORKSPACE}/${FOLDER}/Content`:
  26. const setFolderContent = (contentItem, action) => {
  27. if (contentItem.id === action.folderId) return {...contentItem, content: action.content}
  28. if (contentItem.type === 'folder') return {...contentItem, content: contentItem.content.map(c => setFolderContent(c, action))}
  29. return contentItem
  30. }
  31. return {
  32. ...state,
  33. content: state.content.map(c => setFolderContent(c, action))
  34. }
  35. default:
  36. return state
  37. }
  38. }