331 lines
8.3 KiB
JavaScript
Executable File
331 lines
8.3 KiB
JavaScript
Executable File
/* eslint-disable react-native/no-inline-styles */
|
|
import React, {Component} from 'react';
|
|
import {
|
|
Image,
|
|
PermissionsAndroid,
|
|
StatusBar,
|
|
StyleSheet,
|
|
View,
|
|
} from 'react-native';
|
|
import {
|
|
responsiveFontSize,
|
|
responsiveHeight,
|
|
responsiveWidth,
|
|
} from 'react-native-responsive-dimensions';
|
|
import I18n from 'react-native-i18n';
|
|
import {
|
|
getPasObject,
|
|
getPubActiveObject,
|
|
readUser,
|
|
} from '../../webservice/AuthApi';
|
|
import Configuration from '../../webservice/persistences/Configuration';
|
|
import '../ads/InterticielAds';
|
|
import * as Animatable from 'react-native-animatable';
|
|
import DeviceInfo from 'react-native-device-info';
|
|
import {bindActionCreators} from 'redux';
|
|
import getAuthApiKey from '../../webservice/AuthKeyApi';
|
|
import {connect} from 'react-redux';
|
|
|
|
const theme = require('./../../utils/theme.json');
|
|
const route = require('./../../route.json');
|
|
|
|
class SplashScreen extends Component {
|
|
static navigatorStyle = {
|
|
drawUnderNavBar: true,
|
|
navBarHidden: true,
|
|
drawUnderStatusBar: false,
|
|
statusBarHidden: false,
|
|
statusBarTextColorScheme: 'light',
|
|
};
|
|
static options(passProps) {
|
|
return {
|
|
statusBar: {
|
|
visible: false,
|
|
style: 'light' | 'dark',
|
|
drawBehind: true,
|
|
},
|
|
topBar: {
|
|
title: {
|
|
text: 'My Screen',
|
|
},
|
|
drawBehind: true,
|
|
visible: false,
|
|
animate: false,
|
|
},
|
|
};
|
|
}
|
|
|
|
//
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {};
|
|
}
|
|
workUserResult(result) {
|
|
console.log('SPLASHSCREEN PROPS', this.props);
|
|
if (typeof this.props.navigation.state.params !== 'undefined') {
|
|
if (result === null || result === undefined) {
|
|
this.props.navigation.navigate('Auth');
|
|
} else {
|
|
switch (this.props.navigation.state.params.routeName) {
|
|
case 'historyItemDetails':
|
|
this.props.navigation.navigate(
|
|
this.props.navigation.state.params.routeName,
|
|
{
|
|
item: this.props.navigation.state.params.params,
|
|
},
|
|
);
|
|
break;
|
|
|
|
default:
|
|
this.props.navigation.navigate(
|
|
this.props.navigation.state.params.routeName,
|
|
{
|
|
id: this.props.navigation.state.params.params.id,
|
|
},
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
var way = '';
|
|
var way2 = '';
|
|
if (result === null || result === undefined) {
|
|
way = 'Auth';
|
|
way2 = route.first;
|
|
} else {
|
|
if (!result.category) {
|
|
way = 'App';
|
|
} else {
|
|
switch (result.category) {
|
|
case 'geolocated':
|
|
way = 'AgentApp';
|
|
break;
|
|
case 'super':
|
|
way = 'adminApp';
|
|
break;
|
|
default:
|
|
way = 'supAdminApp';
|
|
}
|
|
}
|
|
way2 = route.login;
|
|
}
|
|
this.props.navigation.navigate(way);
|
|
}
|
|
|
|
/* Navigation.setStackRoot(route.stackRoot,
|
|
{ component: {
|
|
name: way,
|
|
}
|
|
|
|
|
|
}
|
|
);
|
|
Navigation.showOverlay({
|
|
component: {
|
|
name: route.intersticielAds,
|
|
id:"interticiel",
|
|
options: {
|
|
overlay: {
|
|
interceptTouchOutside: false
|
|
}
|
|
}
|
|
}
|
|
});*/
|
|
}
|
|
componentDidMount() {
|
|
try {
|
|
this.requestCameraPermission();
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
this.config = new Configuration();
|
|
this.retrieveAndroidInformation();
|
|
setTimeout(() => this.bounce(), 500);
|
|
this.bounce();
|
|
readUser().then(async user => {
|
|
if (user) {
|
|
if (user !== undefined) {
|
|
if (user.phone !== undefined) {
|
|
this.props.getAuthApiKey(user.phone);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
async requestCameraPermission() {
|
|
try {
|
|
const granted = await PermissionsAndroid.request(
|
|
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
|
|
{
|
|
title: 'Cool Photo App Camera Permission',
|
|
message:
|
|
'Cool Photo App needs access to your camera ' +
|
|
'so you can take awesome pictures.',
|
|
},
|
|
);
|
|
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
|
|
} else {
|
|
console.log('try get information else');
|
|
}
|
|
} catch (err) {
|
|
console.log('try get information error');
|
|
console.log(err);
|
|
}
|
|
}
|
|
handleViewRef = ref => (this.view = ref);
|
|
|
|
bounce = () => this.view.transition({translateX: 0}, {translateX: 700}, 5000);
|
|
|
|
render() {
|
|
return (
|
|
<View style={styles.container}>
|
|
<StatusBar translucent={true} />
|
|
<Image
|
|
style={styles.logo}
|
|
source={require('./../../datas/img/icon3up.png')}
|
|
/>
|
|
<View style={{flexDirection: 'row'}}>
|
|
<Image
|
|
style={styles.logo}
|
|
source={require('./../../datas/img/iconsub3.png')}
|
|
/>
|
|
<Animatable.View
|
|
style={{
|
|
width: responsiveWidth(90),
|
|
height: 92,
|
|
backgroundColor: theme.primary,
|
|
position: 'absolute',
|
|
zIndex: 100,
|
|
}}
|
|
ref={this.handleViewRef}
|
|
/>
|
|
</View>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
retreiveIosInformation() {
|
|
readUser()
|
|
.then(result => {
|
|
setTimeout(() => {
|
|
this.workUserResult(result);
|
|
}, 3000);
|
|
})
|
|
.catch(e => {
|
|
this.props.navigation.navigate('Auth');
|
|
});
|
|
return '';
|
|
}
|
|
|
|
retrieveAndroidInformation() {
|
|
getPasObject().then(data => {
|
|
console.warn(data);
|
|
this.config.setCurrentPas(data);
|
|
});
|
|
|
|
this.config
|
|
._getData()
|
|
.then(lang => {
|
|
if (lang) {
|
|
I18n.locale = lang;
|
|
readUser().then(result => {
|
|
console.warn(result);
|
|
if (result) {
|
|
getPubActiveObject(result.country_id).then(data => {
|
|
console.warn(data);
|
|
this.config.setPubActive(data);
|
|
});
|
|
}
|
|
setTimeout(() => {
|
|
this.workUserResult(result);
|
|
}, 3000);
|
|
});
|
|
} else {
|
|
const code = DeviceInfo.getDeviceLocale();
|
|
console.warn(code);
|
|
I18n.locale = code.toLowerCase();
|
|
readUser()
|
|
.then(result => {
|
|
console.warn(result);
|
|
if (result) {
|
|
getPubActiveObject(result.country_id).then(data => {
|
|
console.warn(data);
|
|
this.config.setPubActive(data);
|
|
});
|
|
}
|
|
setTimeout(() => {
|
|
this.workUserResult(result);
|
|
}, 3000);
|
|
})
|
|
.catch(e => {
|
|
this.setPubActive(data);
|
|
});
|
|
}
|
|
})
|
|
.catch(e => {
|
|
console.warn(e.message);
|
|
DeviceInfo.getDeviceLocale().then(code => {
|
|
console.warn(code);
|
|
|
|
I18n.locale = code.toLowerCase();
|
|
readUser()
|
|
.then(result => {
|
|
setTimeout(() => {
|
|
this.workUserResult(result);
|
|
}, 3000);
|
|
})
|
|
.catch(e => {
|
|
this.props.navigation.navigate('Auth');
|
|
});
|
|
});
|
|
});
|
|
|
|
return '';
|
|
}
|
|
}
|
|
|
|
const mapStateToProps = state => ({
|
|
loading: state.authKeyReducer.loading,
|
|
authKey: state.authKeyReducer.authKey,
|
|
error: state.authKeyReducer.error,
|
|
});
|
|
|
|
const mapDispatchToProps = dispatch =>
|
|
bindActionCreators(
|
|
{
|
|
getAuthApiKey,
|
|
},
|
|
dispatch,
|
|
);
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(SplashScreen);
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
backgroundColor: theme.primary,
|
|
justifyContent: 'center',
|
|
alignItems: 'center',
|
|
},
|
|
logoContaner: {
|
|
flexDirection: 'row',
|
|
marginTop: responsiveHeight(20),
|
|
justifyContent: 'center',
|
|
alignItems: 'center',
|
|
},
|
|
logo: {
|
|
width: responsiveWidth(90),
|
|
resizeMode: 'contain',
|
|
},
|
|
lottie: {
|
|
width: 48,
|
|
height: 64,
|
|
},
|
|
title: {
|
|
fontSize: responsiveFontSize(4),
|
|
alignSelf: 'center',
|
|
fontWeight: 'bold',
|
|
color: 'white',
|
|
},
|
|
});
|