Browse Source

preparation for App opening in workspaceContent

Skylsmoi 5 years ago
parent
commit
db3113aea9
3 changed files with 24 additions and 20 deletions
  1. 19 15
      src/container/WorkspaceContent.jsx
  2. 2 2
      src/reducer/root.js
  3. 3 3
      src/reducer/workspaceContent.js

+ 19 - 15
src/container/WorkspaceContent.jsx View File

@@ -15,7 +15,7 @@ import {
15 15
   getAppList,
16 16
   getContentTypeList,
17 17
   getWorkspaceContentList,
18
-  getWorkspaceContent,
18
+  // getWorkspaceContent,
19 19
   getFolderContent,
20 20
   getWorkspaceList
21 21
 } from '../action-creator.async.js'
@@ -39,7 +39,8 @@ class WorkspaceContent extends React.Component {
39 39
         type: undefined,
40 40
         folder: undefined
41 41
       },
42
-      workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null
42
+      workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null,
43
+      workspaceOpened: false
43 44
     }
44 45
 
45 46
     document.addEventListener('appCustomEvent', this.customEventReducer)
@@ -52,6 +53,7 @@ class WorkspaceContent extends React.Component {
52 53
         break
53 54
       case 'appClosed':
54 55
         this.props.history.push(PAGE.WORKSPACE.CONTENT(this.props.workspace.id, ''))
56
+        this.setState({workspaceOpened: false})
55 57
         break
56 58
     }
57 59
   }
@@ -72,7 +74,6 @@ class WorkspaceContent extends React.Component {
72 74
       if (fetchGetContentTypeList.status === 200) dispatch(setContentTypeList(fetchGetContentTypeList.json))
73 75
     }
74 76
 
75
-
76 77
     let wsToLoad = null
77 78
     if (match.params.idws !== undefined) wsToLoad = match.params.idws
78 79
 
@@ -98,7 +99,7 @@ class WorkspaceContent extends React.Component {
98 99
   }
99 100
 
100 101
   componentDidUpdate (prevProps, prevState) {
101
-    const { contentType, workspace, user, renderApp, match } = this.props
102
+    const { contentType, workspaceContent, user, renderApp, match } = this.props
102 103
 
103 104
     console.log('componentDidUpdate')
104 105
 
@@ -109,9 +110,9 @@ class WorkspaceContent extends React.Component {
109 110
 
110 111
     // if (user.user_id !== -1 && prevProps.user.id !== user.id) dispatch(getWorkspaceList(user.user_id, idWorkspace))
111 112
 
112
-    if (match.params.idcts && workspace.id !== -1) { // if a content id is in url, open it
113
+    if (match.params.idcts && workspaceContent.id !== -1 && !workspaceOpened && workspaceContent.length) { // if a content id is in url, open it
113 114
       const idContentToOpen = parseInt(match.params.idcts)
114
-      const contentToOpen = workspace.find(wsc => wsc.id === idContentToOpen) // || await dispatch(getWorkspaceContent(idWorkspace, idContentToOpen))
115
+      const contentToOpen = workspaceContent.find(wsc => wsc.id === idContentToOpen) // || await dispatch(getWorkspaceContent(idWorkspace, idContentToOpen))
115 116
 
116 117
       // @FIXME : for alpha, we do not handle subfolder. commented code bellow should load a component that is not in the workspace root
117 118
       // if (contentToOpen === undefined) { // content is not is ws root
@@ -119,17 +120,20 @@ class WorkspaceContent extends React.Component {
119 120
       //   console.log(fetchContent)
120 121
       // }
121 122
 
123
+      console.log('contentToOpen', contentToOpen)
124
+
122 125
       renderApp(
123 126
         contentType.find(ct => ct.type === contentToOpen.type),
124 127
         user,
125
-        {...contentToOpen, workspace: workspace}
128
+        {...contentToOpen, workspaceContent: workspaceContent}
126 129
       )
130
+      this.setState({workspaceOpened: true})
127 131
     }
128 132
   }
129 133
 
130 134
   handleClickContentItem = content => {
131 135
     console.log('content clicked', content)
132
-    this.props.history.push(`${PAGE.WORKSPACE.CONTENT(content.workspace_id, content.id)}${this.props.location.search}`)
136
+    this.props.history.push(`${PAGE.WORKSPACE.CONTENT(content.workspaceId, content.id)}${this.props.location.search}`)
133 137
   }
134 138
 
135 139
   handleClickEditContentItem = (e, content) => {
@@ -166,22 +170,22 @@ class WorkspaceContent extends React.Component {
166 170
   }
167 171
 
168 172
   render () {
169
-    const { workspace, app, contentType } = this.props
173
+    const { workspaceContent, app, contentType } = this.props
170 174
 
171 175
     const filterWorkspaceContent = (contentList, filter) => {
172 176
       console.log(contentList, filter)
173 177
       return filter.length === 0
174 178
         ? contentList
175 179
         : contentList.filter(c => c.type === 'folder' || filter.includes(c.type)) // keep unfiltered files and folders
176
-          // @FIXME we need to filter subfolder too, but right now, we dont handle subfolder
177
-          // .map(c => c.type !== 'folder' ? c : {...c, content: filterWorkspaceContent(c.content, filter)}) // recursively filter folder content
180
+      // @FIXME we need to filter subfolder too, but right now, we dont handle subfolder
181
+      // .map(c => c.type !== 'folder' ? c : {...c, content: filterWorkspaceContent(c.content, filter)}) // recursively filter folder content
178 182
     }
179 183
     // .filter(c => c.type !== 'folder' || c.content.length > 0) // remove empty folder => 2018/05/21 - since we load only one lvl of content, don't remove empty
180 184
 
181 185
     const urlFilter = qs.parse(this.props.location.search).type
182 186
 
183
-    const filteredWorkspaceContent = workspace.length > 0
184
-      ? filterWorkspaceContent(workspace, urlFilter ? [urlFilter] : [])
187
+    const filteredWorkspaceContent = workspaceContent.length > 0
188
+      ? filterWorkspaceContent(workspaceContent, urlFilter ? [urlFilter] : [])
185 189
       : []
186 190
     console.log('workspaceContent => filteredWorkspaceContent', filteredWorkspaceContent)
187 191
 
@@ -193,7 +197,7 @@ class WorkspaceContent extends React.Component {
193 197
           <PageTitle
194 198
             parentClass='workspace__header'
195 199
             customClass='justify-content-between'
196
-            title={workspace.label ? workspace.label : ''}
200
+            title={workspaceContent.label ? workspaceContent.label : ''}
197 201
           >
198 202
             <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
199 203
           </PageTitle>
@@ -256,5 +260,5 @@ class WorkspaceContent extends React.Component {
256 260
   }
257 261
 }
258 262
 
259
-const mapStateToProps = ({ user, workspace, workspaceList, app, contentType }) => ({ user, workspace, workspaceList, app, contentType })
263
+const mapStateToProps = ({ user, workspaceContent, workspaceList, app, contentType }) => ({ user, workspaceContent, workspaceList, app, contentType })
260 264
 export default withRouter(connect(mapStateToProps)(appFactory(WorkspaceContent)))

+ 2 - 2
src/reducer/root.js View File

@@ -2,12 +2,12 @@ import { combineReducers } from 'redux'
2 2
 import lang from './lang.js'
3 3
 import flashMessage from './flashMessage.js'
4 4
 import user from './user.js'
5
-import workspace from './workspace.js'
5
+import workspaceContent from './workspaceContent.js'
6 6
 import workspaceList from './workspaceList.js'
7 7
 import app from './app.js'
8 8
 import contentType from './contentType.js'
9 9
 import timezone from './timezone.js'
10 10
 
11
-const rootReducer = combineReducers({ lang, flashMessage, user, workspace, workspaceList, app, contentType, timezone })
11
+const rootReducer = combineReducers({ lang, flashMessage, user, workspaceContent, workspaceList, app, contentType, timezone })
12 12
 
13 13
 export default rootReducer

src/reducer/workspace.js → src/reducer/workspaceContent.js View File

@@ -15,12 +15,12 @@ export default function workspace (state = [], action) {
15 15
         isArchived: wsc.is_archived,
16 16
         parentId: wsc.parent_id,
17 17
         isDeleted: wsc.is_deleted,
18
-        // show_in_ui: wsc.show_in_ui, ???
18
+        showInUi: wsc.show_in_ui,
19 19
         statusSlug: wsc.status_slug,
20
-        subContentTypeSlug: wsc.sub_content_type_slug,
20
+        subContentTypeSlug: wsc.sub_content_type_slug
21 21
       }))
22 22
 
23
-    case `Update/${WORKSPACE}/Filter`:
23
+    case `Update/${WORKSPACE}/Filter`: // not used anymore ?
24 24
       return {...state, filter: action.filterList}
25 25
 
26 26
     case `Set/${WORKSPACE}/${FOLDER}/Content`: