workspaceContentList.js 1.3KB

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