ilink-world/app/screens/splashscreen/SplashScreen.js

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',
},
});