workspaceContent.js 1.2KB

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