1414// You should have received a copy of the GNU Affero General Public License
1515// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616
17- import React from "react" ;
17+ import React , { Suspense } from "react" ;
1818import history from "../../../history" ;
1919import { Redirect , Route , Router , Switch , withRouter } from "react-router-dom" ;
2020import { connect } from "react-redux" ;
2121import { AppState } from "../../../store" ;
2222import { setMenuOpen } from "../../../actions" ;
2323import NotFoundPage from "../../NotFoundPage" ;
24- import ListBuckets from "./ListBuckets/ListBuckets" ;
25- import BucketDetails from "./BucketDetails/BucketDetails" ;
26- import BrowserHandler from "./BucketDetails/BrowserHandler" ;
27- import AddBucket from "./ListBuckets/AddBucket" ;
24+
25+ const ListBuckets = React . lazy ( ( ) => import ( "./ListBuckets/ListBuckets" ) ) ;
26+ const BucketDetails = React . lazy ( ( ) => import ( "./BucketDetails/BucketDetails" ) ) ;
27+ const BrowserHandler = React . lazy (
28+ ( ) => import ( "./BucketDetails/BrowserHandler" )
29+ ) ;
30+ const AddBucket = React . lazy ( ( ) => import ( "./ListBuckets/AddBucket" ) ) ;
2831
2932const mapState = ( state : AppState ) => ( {
3033 open : state . system . sidebarOpen ,
@@ -36,20 +39,65 @@ const Buckets = () => {
3639 return (
3740 < Router history = { history } >
3841 < Switch >
39- < Route path = "/add-bucket" component = { AddBucket } />
40- < Route path = "/buckets/:bucketName/admin/*" component = { BucketDetails } />
41- < Route path = "/buckets/:bucketName/admin" component = { BucketDetails } />
42+ < Route
43+ path = "/add-bucket"
44+ children = { ( routerProps ) => (
45+ < Suspense fallback = { < div > Loading...</ div > } >
46+ < AddBucket />
47+ </ Suspense >
48+ ) }
49+ />
50+ < Route
51+ path = "/buckets/:bucketName/admin/*"
52+ children = { ( routerProps ) => (
53+ < Suspense fallback = { < div > Loading...</ div > } >
54+ < BucketDetails { ...routerProps } />
55+ </ Suspense >
56+ ) }
57+ />
58+ < Route
59+ path = "/buckets/:bucketName/admin"
60+ children = { ( routerProps ) => (
61+ < Suspense fallback = { < div > Loading...</ div > } >
62+ < BucketDetails { ...routerProps } />
63+ </ Suspense >
64+ ) }
65+ />
4266 < Route
4367 path = "/buckets/:bucketName/browse/:subpaths+"
44- component = { BrowserHandler }
68+ children = { ( routerProps ) => (
69+ < Suspense fallback = { < div > Loading...</ div > } >
70+ < BrowserHandler { ...routerProps } />
71+ </ Suspense >
72+ ) }
73+ />
74+ < Route
75+ path = "/buckets/:bucketName/browse"
76+ children = { ( routerProps ) => (
77+ < Suspense fallback = { < div > Loading...</ div > } >
78+ < BrowserHandler { ...routerProps } />
79+ </ Suspense >
80+ ) }
4581 />
46- < Route path = "/buckets/:bucketName/browse" component = { BrowserHandler } />
4782 < Route
4883 path = "/buckets/:bucketName"
4984 component = { ( ) => < Redirect to = { `/buckets` } /> }
5085 />
51- < Route path = "/" component = { ListBuckets } />
52- < Route component = { NotFoundPage } />
86+ < Route
87+ path = "/"
88+ children = { ( routerProps ) => (
89+ < Suspense fallback = { < div > Loading...</ div > } >
90+ < ListBuckets { ...routerProps } />
91+ </ Suspense >
92+ ) }
93+ />
94+ < Route
95+ children = { ( routerProps ) => (
96+ < Suspense fallback = { < div > Loading...</ div > } >
97+ < NotFoundPage />
98+ </ Suspense >
99+ ) }
100+ />
53101 </ Switch >
54102 </ Router >
55103 ) ;
0 commit comments