Skip to content

Instantly share code, notes, and snippets.

@brunodasilvalenga
Created February 21, 2017 18:35
Show Gist options
  • Save brunodasilvalenga/9a19ba106dc2f8c7335c23c8377a23b7 to your computer and use it in GitHub Desktop.
Save brunodasilvalenga/9a19ba106dc2f8c7335c23c8377a23b7 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react'
import {
Navigator,
View,
BackAndroid
} from 'react-native'
import {
Drawer
} from 'native-base'
import SideBar from './SideBar'
import LoginScreen from '../screens/LoginScreen'
import HomeScreen from '../screens/HomeScreen'
import ClientScreen from '../screens/ClientScreen'
export default class AppNavigator extends Component {
constructor(props, context) {
super(props, context)
Firebase.init()
this.state = {
userLoaded: false,
initialView: 'login',
drawerDisabled: true
}
}
componentWillMount() {
let self = this
BackAndroid.addEventListener('hardwareBackPress', () => {
if (self._navigator.getCurrentRoutes().length === 1) {
return false
}
self._navigator.pop()
return true
})
}
_setStateFrag(frag) {
this.setState(frag)
}
_drawerActive(status) {
this.setState = ({
drawerDisabled: status
})
}
_renderScene(route, navigator) {
switch(route.id) {
case 'login':
return <LoginScreen
navigator={navigator}
route={route}
emitter={_emitter}
/>
case 'home':
return <HomeScreen
navigator={navigator}
route={route}
emitter={_emitter}
setParentState={this._setStateFrag}
/>
case 'client':
return <ClientScreen
navigator={navigator}
route={route} />
default:
break
}
}
_configureScene(route, routeStack) {
switch (route.id) {
default:
return Navigator.SceneConfigs.FloatFromBottomAndroid
}
}
render() {
return (
<Drawer
ref={(ref) => this._drawer = ref}
content={ <SideBar navigator={this._navigator}/>}
tapToClose={true}
disabled={this.state.drawerDisabled}
>
<Navigator
ref={(ref)=> this._navigator = ref}
initialRoute={{id: this.state.initialView}}
configureScene={this._configureScene}
renderScene={this._renderScene.bind(this)}
/>
</Drawer>
)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment