2020-10-06 14:15:35 +03:00
import React , { useEffect , useState } from 'react' ;
2019-06-20 20:48:19 +02:00
import './App.css' ;
2020-10-07 22:45:34 +03:00
import { Navbar , Dropdown , Icon } from 'react-materialize' ;
2019-06-23 19:38:26 +02:00
import MakeMoneyMove from './cash/MakeMoneyMove' ;
2020-09-11 12:34:15 +03:00
import Flow from "./homies/Flow" ;
2019-06-23 19:38:26 +02:00
import Cash from './cash/Cash' ;
2020-09-12 01:17:52 +03:00
import Homies from './homies/Homies' ;
2020-09-04 06:02:33 +03:00
import { BrowserRouter as Router , Route } from "react-router-dom" ;
2019-06-23 19:38:26 +02:00
import RoutableNavItem from './common/RoutableNavItem' ;
2020-10-06 14:15:35 +03:00
import axios from 'axios' ;
2020-09-11 12:34:15 +03:00
import {
2020-09-04 06:02:33 +03:00
CRIB ,
2020-10-08 01:06:51 +03:00
GANGS ,
2020-09-11 12:34:15 +03:00
MAKE _MONEY _MOVE ,
2020-09-12 01:17:52 +03:00
HOMIE _FLOW ,
2020-10-06 14:15:35 +03:00
HOMIES ,
PUT _IN _WORK
2019-06-23 19:38:26 +02:00
} from './RouteNames' ;
2020-09-19 04:46:01 +03:00
import PutInWork from "./cash/PutInWork" ;
2020-10-07 22:45:34 +03:00
import GangOnboarding from "./gangOnboarding/GangOnboarding" ;
2020-10-08 01:06:51 +03:00
import Gangs from './gangs/Gangs' ;
2020-10-06 14:15:35 +03:00
import { errorToast } from "./common/errorHelpers" ;
const App = ( props ) => {
const [ loading , setLoading ] = useState ( true ) ;
2020-10-07 22:45:34 +03:00
const [ gangs , setGangs ] = useState ( [ ] ) ;
const [ selectedGang , setSelectedGang ] = useState ( { } ) ;
2020-10-06 14:15:35 +03:00
useEffect ( ( ) => {
( async ( ) => {
try {
setLoading ( true ) ;
2020-10-07 22:45:34 +03:00
const response = await axios . get ( ` /api/gangs ` ) ;
2020-10-06 14:15:35 +03:00
if ( response . status === 200 && response . data ) {
2020-10-07 22:45:34 +03:00
setGangs ( response . data ) ;
setSelectedGang ( response . data [ 0 ] ) ;
2020-10-06 14:15:35 +03:00
} else {
errorToast ( ) ;
}
} catch ( e ) {
errorToast ( ) ;
}
setLoading ( false ) ;
} ) ( ) ;
} , [ ] ) ;
const routes = ( [
2020-10-07 22:45:34 +03:00
< Route key = '1' exact path = { CRIB } component = { ( ) => < Cash gang = { selectedGang } / > } / > ,
2020-10-08 01:06:51 +03:00
< Route key = '2' exact path = { GANGS } component = { ( ) => < Gangs gangs = { gangs } gangsSetter = { setGangs } / > } / > ,
< Route key = '3' exact path = { HOMIES } component = { ( ) => < Homies gang = { selectedGang } / > } / > ,
< Route key = '4' path = { HOMIE _FLOW } component = { ( ) => < Flow gang = { selectedGang } / > } / > ,
< Route key = '5' path = { MAKE _MONEY _MOVE } component = { ( ) => < MakeMoneyMove gang = { selectedGang } / > } / > ,
< Route key = '6' path = { PUT _IN _WORK } component = { ( ) => < PutInWork gang = { selectedGang } / > } / >
2020-10-06 14:15:35 +03:00
]
) ;
2020-10-07 22:45:34 +03:00
const onboarded = ( ) => selectedGang . chip _name && selectedGang . chip _name . length > 0 ;
2020-10-06 14:15:35 +03:00
const preloaderCircle = (
< div className = "container" >
< div className = "valign-wrapper center-align preloader-circle" >
< div className = "preloader-wrapper big active" >
< div className = "spinner-layer spinner-blue-only" >
< div className = "circle-clipper left" >
< div className = "circle" / >
< / d i v >
< div className = "gap-patch" >
< div className = "circle" / >
< / d i v >
< div className = "circle-clipper right" >
< div className = "circle" / >
< / d i v >
< / d i v >
< / d i v >
< / d i v >
< / d i v >
) ;
2019-06-20 20:48:19 +02:00
2020-10-07 22:45:34 +03:00
const navbarLogoWithGang = (
< div >
< a href = '/' > GKS < / a >
< Dropdown
id = "gang_dropdown"
options = { {
alignment : 'left' ,
autoTrigger : true ,
closeOnClick : true ,
constrainWidth : true ,
2020-10-08 01:06:51 +03:00
coverTrigger : false ,
2020-10-07 22:45:34 +03:00
hover : false ,
inDuration : 150 ,
outDuration : 250
} }
trigger = { < a className = "bump" > { selectedGang && selectedGang . name && selectedGang . name . length > 0 ? ` ${ selectedGang . name } gang ` : '[No name gang]' } < Icon right > arrow _drop _down < / I c o n > < / a > }
>
2020-10-08 01:06:51 +03:00
{ gangs . map ( gang => < a key = { ` gang- ${ gang . id } ` } onClick = { ( ) => setSelectedGang ( gang ) } > { gang . name } < / a > ) }
2020-10-07 22:45:34 +03:00
< / D r o p d o w n >
< / d i v >
) ;
2020-09-11 12:34:15 +03:00
2019-06-20 20:48:19 +02:00
return (
2020-09-04 06:02:33 +03:00
< Router >
< div className = "navbar-fixed" >
2020-10-07 22:45:34 +03:00
< Navbar brand = { navbarLogoWithGang } alignLinks = "right" >
2020-09-04 06:02:33 +03:00
< RoutableNavItem href = { CRIB } >
Crib
< / R o u t a b l e N a v I t e m >
2019-06-23 19:38:26 +02:00
2020-10-08 01:06:51 +03:00
< RoutableNavItem href = { GANGS } >
Gangs
< / R o u t a b l e N a v I t e m >
2020-09-12 01:17:52 +03:00
< RoutableNavItem href = { HOMIES } >
Homies
2020-09-04 06:02:33 +03:00
< / R o u t a b l e N a v I t e m >
2019-06-23 19:38:26 +02:00
2020-09-04 06:02:33 +03:00
< RoutableNavItem href = { MAKE _MONEY _MOVE } >
Make Money Move
< / R o u t a b l e N a v I t e m >
2020-09-19 04:46:01 +03:00
< RoutableNavItem href = { PUT _IN _WORK } >
Put in Work
< / R o u t a b l e N a v I t e m >
2020-09-04 06:02:33 +03:00
< / N a v b a r >
< / d i v >
2019-06-23 19:38:26 +02:00
2020-09-04 06:02:33 +03:00
< div className = "autoscrolling" >
2020-10-06 14:15:35 +03:00
{ loading && preloaderCircle }
2020-10-07 22:45:34 +03:00
{ ! loading && ! onboarded ( ) && < GangOnboarding gang = { selectedGang } / > }
2020-10-06 14:15:35 +03:00
{ ! loading && onboarded ( ) && routes }
2019-06-23 19:38:26 +02:00
< / d i v >
< / R o u t e r >
2019-06-20 20:48:19 +02:00
) ;
}
export default App ;