11import React , { Component , Suspense } from 'react' ;
22import { Redirect , Route , Switch } from 'react-router-dom' ;
33import { Container } from 'reactstrap' ;
4+ import { getVersion } from "../../actions/versionActions" ;
45
56import {
67 AppAside ,
@@ -26,14 +27,34 @@ const DefaultAside = React.lazy(() => import('./DefaultAside'));
2627const DefaultFooter = React . lazy ( ( ) => import ( './DefaultFooter' ) ) ;
2728const DefaultHeader = React . lazy ( ( ) => import ( './DefaultHeader' ) ) ;
2829
30+ const VERSION_NAV_ITEM_ATTRS = {
31+ attributes : { target : '_blank' } ,
32+ class : 'mt-auto' ,
33+ icon : 'cui-cog' ,
34+ url : 'https://rclone.org/changelog' ,
35+ variant : 'success'
36+ }
2937class DefaultLayout extends Component {
3038
3139 loading = ( ) => < div className = "animated fadeIn pt-1 text-center" > Loading...</ div > ;
3240
41+ get navConfig ( ) {
42+ return {
43+ items : [
44+ ...navigation . items ,
45+ {
46+ name : this . props . version . version ,
47+ ...VERSION_NAV_ITEM_ATTRS
48+ }
49+ ]
50+ }
51+ }
3352
3453 componentWillMount ( ) {
3554 if ( ! localStorage . getItem ( AUTH_KEY ) ) {
3655 this . props . history . push ( '/login' ) ;
56+ } else {
57+ this . props . getVersion ( ) ;
3758 }
3859 }
3960
@@ -54,7 +75,7 @@ class DefaultLayout extends Component {
5475 < AppSidebarHeader />
5576 < AppSidebarForm />
5677 < Suspense fallback = { this . loading ( ) } >
57- < AppSidebarNav navConfig = { navigation } { ... this . props } />
78+ < AppSidebarNav navConfig = { this . navConfig } />
5879 </ Suspense >
5980 < AppSidebarFooter />
6081 < AppSidebarMinimizer />
@@ -102,6 +123,7 @@ class DefaultLayout extends Component {
102123
103124const mapStateToProps = ( state ) => ( {
104125 isConnected : state . status . isConnected ,
126+ version : state . version ,
105127} ) ;
106128
107- export default connect ( mapStateToProps , { } ) ( DefaultLayout ) ;
129+ export default connect ( mapStateToProps , { getVersion } ) ( DefaultLayout ) ;
0 commit comments