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