8
8
HomeView ,
9
9
SubmissionReviewView ,
10
10
} from "./views" ;
11
- import { SUPPORTED_LANGS } from "./helpers/constants " ;
11
+ import useUrlLang from "./hooks/useUrlLang " ;
12
12
13
13
const Routes = ( {
14
14
connectedBuilder,
@@ -20,18 +20,22 @@ const Routes = ({
20
20
fetchUserData,
21
21
loadWeb3Modal,
22
22
} ) => {
23
+ const { langUrlPrefix, path } = useUrlLang ( ) ;
24
+ // INFO: pathPrefix is the path without trailing `/`
25
+ const pathPrefix = path . replace ( / \/ $ / , "" ) ;
26
+
23
27
return (
24
28
< Switch >
25
- < Route exact path = "/" >
26
- { ( { match } ) => < HomeView connectedBuilder = { connectedBuilder } userProvider = { userProvider } match = { match } /> }
29
+ < Route exact path = { path } >
30
+ < HomeView connectedBuilder = { connectedBuilder } userProvider = { userProvider } />
27
31
</ Route >
28
- < Route exact path = " /portfolio" >
29
- { address && < Redirect to = { `/builders/${ address } ` } /> }
32
+ < Route exact path = { ` ${ pathPrefix } /portfolio` } >
33
+ { address && < Redirect to = { `${ langUrlPrefix } /builders/${ address } ` } /> }
30
34
</ Route >
31
- < Route path = " /builders" exact >
35
+ < Route path = { ` ${ pathPrefix } /builders` } exact >
32
36
< BuilderListView serverUrl = { serverUrl } mainnetProvider = { mainnetProvider } userRole = { userRole } />
33
37
</ Route >
34
- < Route path = " /builders/:builderAddress" >
38
+ < Route path = { ` ${ pathPrefix } /builders/:builderAddress` } >
35
39
< BuilderProfileView
36
40
serverUrl = { serverUrl }
37
41
mainnetProvider = { mainnetProvider }
@@ -41,7 +45,7 @@ const Routes = ({
41
45
fetchUserData = { fetchUserData }
42
46
/>
43
47
</ Route >
44
- < Route path = " /challenge/:challengeId" >
48
+ < Route path = { ` ${ pathPrefix } /challenge/:challengeId` } >
45
49
< ChallengeDetailView
46
50
serverUrl = { serverUrl }
47
51
address = { address }
@@ -51,55 +55,12 @@ const Routes = ({
51
55
/>
52
56
</ Route >
53
57
{ /* ToDo: Protect this route on the frontend? */ }
54
- < Route path = " /submission-review" exact >
58
+ < Route path = { ` ${ pathPrefix } /submission-review` } exact >
55
59
< SubmissionReviewView userProvider = { userProvider } mainnetProvider = { mainnetProvider } />
56
60
</ Route >
57
- < Route path = " /activity" exact >
61
+ < Route path = { ` ${ pathPrefix } /activity` } exact >
58
62
< ActivityView />
59
63
</ Route >
60
- < Route path = { `/:lang(${ SUPPORTED_LANGS . join ( "|" ) } )` } >
61
- { ( { match : { path, url } } ) => (
62
- < Switch >
63
- < Route exact path = { path } >
64
- { ( { match } ) => (
65
- < HomeView connectedBuilder = { connectedBuilder } userProvider = { userProvider } match = { match } />
66
- ) }
67
- </ Route >
68
- < Route exact path = { `${ path } /portfolio` } >
69
- { address && < Redirect to = { `${ url } /builders/${ address } ` } /> }
70
- </ Route >
71
- < Route path = { `${ path } /builders` } exact >
72
- < BuilderListView serverUrl = { serverUrl } mainnetProvider = { mainnetProvider } userRole = { userRole } />
73
- </ Route >
74
- < Route path = { `${ path } /builders/:builderAddress` } >
75
- < BuilderProfileView
76
- serverUrl = { serverUrl }
77
- mainnetProvider = { mainnetProvider }
78
- address = { address }
79
- userRole = { userRole }
80
- userProvider = { userProvider }
81
- fetchUserData = { fetchUserData }
82
- />
83
- </ Route >
84
- < Route path = { `${ path } /challenge/:challengeId` } >
85
- < ChallengeDetailView
86
- serverUrl = { serverUrl }
87
- address = { address }
88
- userProvider = { userProvider }
89
- userRole = { userRole }
90
- loadWeb3Modal = { loadWeb3Modal }
91
- />
92
- </ Route >
93
- { /* ToDo: Protect this route on the frontend? */ }
94
- < Route path = { `${ path } /submission-review` } exact >
95
- < SubmissionReviewView userProvider = { userProvider } mainnetProvider = { mainnetProvider } />
96
- </ Route >
97
- < Route path = { `${ path } /activity` } exact >
98
- < ActivityView />
99
- </ Route >
100
- </ Switch >
101
- ) }
102
- </ Route >
103
64
</ Switch >
104
65
) ;
105
66
} ;
0 commit comments