workspaceContentList.js 1.8KB

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