import React, { Component } from "react"; import { Platform, StyleSheet, View, SafeAreaView, TouchableOpacity, ImageBackground, NetInfo, Geolocation, Image, Text } from "react-native"; import { observable, transaction } from "mobx"; import Icon2 from "react-native-vector-icons/dist/MaterialCommunityIcons"; import Permissions from "react-native-permissions"; import firebase from "react-native-firebase"; import { observer, inject } from "mobx-react/native"; import Size from "../../config/size"; import AsyncStorageHelper from "../../config/asyncStorageHelper"; import { width, height } from "../../config/screen"; import { scale, verticalScale, moderateScale } from "react-native-size-matters"; import debounce from "lodash.debounce"; import theme from '../../config/colors' const size = new Size(); const asyncStorageHelper = new AsyncStorageHelper(); @inject(["menuStore"], ["userStore"]) @observer class Init extends Component { constructor(props) { super(props); this.store = this.props.menuStore; this.userStore = this.props.userStore; firebase.analytics().setAnalyticsCollectionEnabled(true); } static navigationOptions = { gesturesEnabled: false } navigatieAction(page,Param) { console.log(page) this.props.navigation.navigate(page,Param); } debounceInput = debounce(() => { this.init(); }, 100); login() { asyncStorageHelper.getData("userInfo", userInfo => { if (userInfo != null) { console.log(userInfo); this.userStore.loginPost(userInfo, this, false); } }); } notificationInit() { firebase .messaging() .hasPermission() .then(enabled => { if (enabled) { firebase .messaging() .getToken() .then(notificationToken => { console.log("LOG: ", notificationToken); this.userStore.regUserNotificationTokenWithNoMid(notificationToken) }); // user has permissions } else { firebase .messaging() .requestPermission() .then(() => { // alert("User Now Has Permission"); }) .catch(error => { console.log(error); // alert("Error", error); // User has rejected permissions }); } }); this.notificationListener = firebase .notifications() .onNotification(notification => { // Process your notification as required const { body, data, notificationId, sound, subtitle, title } = notification; console.log("LOG: ", title, body, JSON.stringify(data)); }); } getMenuItemFromInit(){ this.store.getMenuItem(this); } init() { var testdate = new Date(2019, 2, 20, 11, 1, 0, 0) console.log('testdate: '+ testdate) console.log('utc: '+testdate.getUTCDate()) console.log('utc: '+testdate.getDate()) this.userStore.languageInit() asyncStorageHelper.getData("userInfo", userInfo => { console.log('test') if (userInfo != null) { //this.store.getMenuItem(this); this.login(); // console.log('testing '+ this.store.pickupPointId) asyncStorageHelper.getData("pickupPointId", pickupPointId => { this.userStore.pickupPointId = pickupPointId this.store.pickupPointId = pickupPointId console.log('testing '+ this.store.pickupPointId) this.userStore.pickupLoaction(this, true,pickupPointId); }) } else { this.notificationInit(); asyncStorageHelper.getData("pickupPointId", pickupPointId => { console.log(pickupPointId) if (pickupPointId != null) { this.userStore.pickupPointId = pickupPointId this.store.pickupPointId = pickupPointId console.log('init pickupPointId: ' + pickupPointId) this.userStore.pickupLoaction(this, true,pickupPointId); //this.store.getMenuItem(this); } else { this.userStore.pickupLoaction(this, false,0); } }); } }); } getUserLocation() { navigator.geolocation.getCurrentPosition( position => { this.userStore.userLocation = position; console.log(position); }, error => { console.log(error); }, { enableHighAccuracy: false, timeout: 10000, maximumAge: 10000 } ); } async createNotificationListeners() { /* * Triggered when a particular notification has been received in foreground * */ this.notificationListener = firebase .notifications() .onNotification(notification => { const { title, body } = notification; // this.showAlert(title, body); }); /* * If your app is in background, you can listen for when a notification is clicked / tapped / opened as follows: * */ this.notificationOpenedListener = firebase .notifications() .onNotificationOpened(notificationOpen => { const { title, body } = notificationOpen.notification; // this.showAlert(title, body); }); /* * If your app is closed, you can check if it was opened by a notification being clicked / tapped / opened as follows: * */ const notificationOpen = await firebase .notifications() .getInitialNotification(); if (notificationOpen) { const { title, body } = notificationOpen.notification; // this.showAlert(title, body); } /* * Triggered for data only payload in foreground * */ this.messageListener = firebase.messaging().onMessage(message => { //process data message console.log(JSON.stringify(message)); }); } showAlert(title, body) { Alert.alert( title, body, [{ text: "OK", onPress: () => console.log("OK Pressed") }], { cancelable: false } ); } componentDidMount() { NetInfo.isConnected.addEventListener("connectionChange", isConnected => { console.log("Network status:" + (isConnected ? "online" : "offline")); }); this.debounceInput(); this.createNotificationListeners(); Permissions.check("location", { type: "whenInUse" }).then(response => { console.log(response); }); // this._requestPermission(); console.log(this.userStore.logined); } _requestPermission = () => { Permissions.request("location").then(response => { // Returns once the user has chosen to 'allow' or to 'not allow' access // Response is one of: 'authorized', 'denied', 'restricted', or 'undetermined' // this.setState({ photoPermission: response }) console.log(response); }); }; render() { return ( {this.store.errorMessage} ); } } export default Init;