24
24
*/
25
25
26
26
import { skipToken } from "@reduxjs/toolkit/query" ;
27
- import { Fragment , useEffect , useState } from "react" ;
27
+ import { Fragment , useContext , useEffect , useState } from "react" ;
28
28
import { Helmet } from "react-helmet" ;
29
29
import { Redirect , useLocation } from "react-router" ;
30
30
import { Route , Switch } from "react-router-dom" ;
31
31
import { CompatRoute } from "react-router-dom-v5-compat" ;
32
32
import { ToastContainer } from "react-toastify" ;
33
33
34
34
import { LoginHelper } from "./authentication" ;
35
- import { DashboardBanner } from "./components/earlyAccessBanner/EarlyAccessBanner" ;
36
35
import { Loader } from "./components/Loader" ;
37
36
import LazyDatasetAddToProject from "./dataset/addtoproject/LazyDatasetAddToProject" ;
38
37
import { DatasetCoordinator } from "./dataset/Dataset.state" ;
39
38
import LazyShowDataset from "./dataset/LazyShowDataset" ;
40
39
import LazyAdminPage from "./features/admin/LazyAdminPage" ;
41
- import LazyDashboard from "./features/dashboard/LazyDashboard " ;
40
+ import LazyDashboardV2 from "./features/dashboardV2/LazyDashboardV2 " ;
42
41
import { Favicon } from "./features/favicon/Favicon" ;
43
- import LazyInactiveKGProjectsPage from "./features/inactiveKgProjects/LazyInactiveKGProjectsPage" ;
44
- import LazySearchPage from "./features/kgSearch/LazySearchPage" ;
45
42
import { Unavailable } from "./features/maintenance/Maintenance" ;
43
+ import LazyRootV1 from "./features/rootV1/LazyRootV1" ;
46
44
import LazyRootV2 from "./features/rootV2/LazyRootV2" ;
47
- import LazySecrets from "./features/secrets/LazySecrets" ;
48
- import LazyAnonymousSessionsList from "./features/session/components/LazyAnonymousSessionsList" ;
49
45
import { useGetUserQuery } from "./features/usersV2/api/users.api" ;
50
- import LazyHelp from "./help/LazyHelp" ;
51
46
import LazyAnonymousHome from "./landing/LazyAnonymousHome" ;
52
47
import { FooterNavbar , RenkuNavBar } from "./landing/NavBar" ;
53
48
import LazyNotFound from "./not-found/LazyNotFound" ;
54
- import LazyNotificationsPage from "./notifications/LazyNotificationsPage" ;
55
49
import NotificationsManager from "./notifications/NotificationsManager" ;
56
50
import Cookie from "./privacy/Cookie" ;
57
51
import LazyProjectView from "./project/LazyProjectView" ;
58
52
import LazyProjectList from "./project/list/LazyProjectList" ;
59
53
import LazyNewProject from "./project/new/LazyNewProject" ;
60
- import LazyStyleGuide from "./styleguide/LazyStyleGuide" ;
61
54
import AppContext from "./utils/context/appContext" ;
62
55
import useLegacySelector from "./utils/customHooks/useLegacySelector.hook" ;
63
- import { Url } from "./utils/helpers/url" ;
64
56
import { setupWebSocket } from "./websocket" ;
65
57
66
58
import "react-toastify/dist/ReactToastify.css" ;
@@ -73,132 +65,91 @@ export const ContainerWrap = ({ children, fullSize = false }) => {
73
65
return < div className = { classContainer } > { children } </ div > ;
74
66
} ;
75
67
76
- function CentralContentContainer ( props ) {
77
- const { coreApiVersionedUrlConfig , notifications , socket , user } = props ;
68
+ function CentralContentContainer ( { user , socket } ) {
69
+ const { params , model , client , notifications } = useContext ( AppContext ) ;
78
70
79
71
const { data : userInfo } = useGetUserQuery (
80
- props . user . logged ? undefined : skipToken
72
+ user . logged ? undefined : skipToken
81
73
) ;
82
74
83
- const appContext = {
84
- client : props . client ,
85
- coreApiVersionedUrlConfig,
86
- location : props . location ,
87
- model : props . model ,
88
- notifications,
89
- params : props . params ,
90
- webSocket : socket ,
91
- } ;
75
+ // check anonymous sessions settings
76
+ const blockAnonymous = ! user . logged && ! params [ "ANONYMOUS_SESSIONS" ] ;
92
77
93
78
return (
94
79
< div className = "d-flex flex-grow-1" >
95
- < AppContext . Provider value = { appContext } >
96
- < Helmet >
97
- < title > Reproducible Data Science | Open Research | Renku</ title >
98
- </ Helmet >
99
- < Switch >
100
- < CompatRoute exact path = "/" >
101
- { props . user . logged ? (
102
- < ContainerWrap >
103
- < LazyDashboard />
104
- </ ContainerWrap >
105
- ) : (
106
- < div className = "w-100" >
107
- < LazyAnonymousHome />
108
- </ div >
109
- ) }
110
- </ CompatRoute >
111
- < CompatRoute path = "/help" >
112
- < ContainerWrap >
113
- < LazyHelp />
114
- </ ContainerWrap >
115
- </ CompatRoute >
116
- < CompatRoute path = "/search" >
117
- < ContainerWrap >
118
- < LazySearchPage />
119
- </ ContainerWrap >
120
- </ CompatRoute >
121
- < CompatRoute path = "/inactive-kg-projects" >
122
- { props . user . logged ? (
123
- < ContainerWrap >
124
- < LazyInactiveKGProjectsPage />
125
- </ ContainerWrap >
126
- ) : (
127
- < LazyNotFound />
128
- ) }
129
- </ CompatRoute >
130
- { [ "/projects" , "/projects/starred" , "/projects/all" ] . map ( ( path ) => (
131
- < CompatRoute key = { path } exact path = { path } >
132
- < ContainerWrap >
133
- < LazyProjectList />
134
- </ ContainerWrap >
135
- </ CompatRoute >
136
- ) ) }
137
- < CompatRoute exact path = "/projects/new" >
138
- < ContainerWrap >
139
- < LazyNewProject />
80
+ < Helmet >
81
+ < title > Reproducible Data Science | Open Research | Renku</ title >
82
+ </ Helmet >
83
+ < Switch >
84
+ < CompatRoute exact path = "/" >
85
+ { user . logged ? (
86
+ < ContainerWrap fullSize = { true } >
87
+ < LazyDashboardV2 />
140
88
</ ContainerWrap >
141
- </ CompatRoute >
142
- < CompatRoute path = "/projects" >
143
- < LazyProjectView />
144
- </ CompatRoute >
145
- < Route exact path = { Url . get ( Url . pages . sessions ) } >
146
- { ! user . logged ? < LazyAnonymousSessionsList /> : < Redirect to = "/" /> }
147
- </ Route >
148
- < Route path = "/datasets/:identifier/add" >
149
- < LazyDatasetAddToProject
150
- insideProject = { false }
151
- model = { props . model }
152
- />
153
- </ Route >
154
- < CompatRoute path = "/datasets/:identifier" >
155
- < LazyShowDataset
156
- insideProject = { false }
157
- client = { props . client }
158
- projectsUrl = "/projects"
159
- datasetCoordinator = {
160
- new DatasetCoordinator (
161
- props . client ,
162
- props . model . subModel ( "dataset" )
163
- )
164
- }
165
- logged = { props . user . logged }
166
- model = { props . model }
167
- />
168
- </ CompatRoute >
169
- < CompatRoute path = "/datasets" >
170
- < Redirect to = "/search?type=dataset" />
171
- </ CompatRoute >
172
- < CompatRoute path = "/notifications" >
173
- < ContainerWrap >
174
- < LazyNotificationsPage />
175
- </ ContainerWrap >
176
- </ CompatRoute >
177
- < CompatRoute path = "/v2" >
178
- < LazyRootV2 />
179
- </ CompatRoute >
180
- < CompatRoute path = "/style-guide" >
89
+ ) : (
90
+ < div className = "w-100" >
91
+ < LazyAnonymousHome />
92
+ </ div >
93
+ ) }
94
+ </ CompatRoute >
95
+ { [ "/projects" , "/projects/starred" , "/projects/all" ] . map ( ( path ) => (
96
+ < CompatRoute key = { path } exact path = { path } >
181
97
< ContainerWrap >
182
- < LazyStyleGuide />
98
+ < LazyProjectList />
183
99
</ ContainerWrap >
184
100
</ CompatRoute >
185
- { userInfo ?. isLoggedIn && userInfo . is_admin && (
186
- < CompatRoute path = "/admin" >
187
- < ContainerWrap >
188
- < LazyAdminPage />
189
- </ ContainerWrap >
190
- </ CompatRoute >
191
- ) }
192
- < CompatRoute path = "/secrets" >
101
+ ) ) }
102
+ < CompatRoute exact path = "/projects/new" >
103
+ < ContainerWrap >
104
+ < LazyNewProject />
105
+ </ ContainerWrap >
106
+ </ CompatRoute >
107
+ < Route path = "/projects/:subUrl+" >
108
+ < LazyProjectView
109
+ client = { client }
110
+ params = { params }
111
+ model = { model }
112
+ user = { user }
113
+ blockAnonymous = { blockAnonymous }
114
+ notifications = { notifications }
115
+ socket = { socket }
116
+ />
117
+ </ Route >
118
+ < Route path = "/datasets/:identifier/add" >
119
+ < LazyDatasetAddToProject insideProject = { false } model = { model } />
120
+ </ Route >
121
+ < CompatRoute path = "/datasets/:identifier" >
122
+ < LazyShowDataset
123
+ insideProject = { false }
124
+ client = { client }
125
+ projectsUrl = "/projects"
126
+ datasetCoordinator = {
127
+ new DatasetCoordinator ( client , model . subModel ( "dataset" ) )
128
+ }
129
+ logged = { user . logged }
130
+ model = { model }
131
+ />
132
+ </ CompatRoute >
133
+ < CompatRoute path = "/datasets" >
134
+ < Redirect to = "/search?type=dataset" />
135
+ </ CompatRoute >
136
+ < CompatRoute path = "/v1" >
137
+ < LazyRootV1 user = { user } />
138
+ </ CompatRoute >
139
+ < CompatRoute path = "/v2" >
140
+ < LazyRootV2 />
141
+ </ CompatRoute >
142
+ { userInfo ?. isLoggedIn && userInfo . is_admin && (
143
+ < CompatRoute path = "/admin" >
193
144
< ContainerWrap >
194
- < LazySecrets />
145
+ < LazyAdminPage />
195
146
</ ContainerWrap >
196
147
</ CompatRoute >
197
- < Route path = "/*" >
198
- < LazyNotFound / >
199
- </ Route >
200
- </ Switch >
201
- </ AppContext . Provider >
148
+ ) }
149
+ < Route path = "/*" >
150
+ < LazyNotFound / >
151
+ </ Route >
152
+ </ Switch >
202
153
</ div >
203
154
) ;
204
155
}
@@ -252,19 +203,25 @@ function App(props) {
252
203
< Unavailable model = { props . model } statuspageId = { props . statuspageId } />
253
204
) ;
254
205
}
206
+ const { coreApiVersionedUrlConfig, socket } = props ;
207
+ const appContext = {
208
+ client : props . client ,
209
+ coreApiVersionedUrlConfig,
210
+ location : props . location ,
211
+ model : props . model ,
212
+ notifications,
213
+ params : props . params ,
214
+ webSocket : socket ,
215
+ } ;
255
216
256
217
return (
257
218
< Fragment >
258
219
< Favicon />
259
- < RenkuNavBar { ...props } notifications = { notifications } />
260
- < DashboardBanner user = { props . user } />
261
- < CentralContentContainer
262
- notifications = { notifications }
263
- socket = { webSocket }
264
- location = { location }
265
- { ...props }
266
- />
267
- < FooterNavbar params = { props . params } />
220
+ < AppContext . Provider value = { appContext } >
221
+ < RenkuNavBar user = { user } />
222
+ < CentralContentContainer user = { user } socket = { webSocket } />
223
+ </ AppContext . Provider >
224
+ < FooterNavbar />
268
225
< Cookie />
269
226
< ToastContainer />
270
227
</ Fragment >
0 commit comments