diff --git a/App/android/app/build.gradle b/App/android/app/build.gradle
index 2b2f7adc..ec49a2d4 100755
--- a/App/android/app/build.gradle
+++ b/App/android/app/build.gradle
@@ -149,6 +149,7 @@ android {
}
dependencies {
+ compile project(':react-native-maps')
compile project(':react-native-device-info')
compile project(':react-native-material-shadows')
compile project(':react-native-linear-gradient')
diff --git a/App/android/app/src/main/AndroidManifest.xml b/App/android/app/src/main/AndroidManifest.xml
index 94c48efd..46057b3b 100755
--- a/App/android/app/src/main/AndroidManifest.xml
+++ b/App/android/app/src/main/AndroidManifest.xml
@@ -1,27 +1,30 @@
+ package="com.app">
-
+
-
-
-
-
-
-
-
+ android:name=".MainApplication"
+ android:label="@string/app_name"
+ android:icon="@mipmap/ic_launcher"
+ android:allowBackup="false"
+ android:theme="@style/AppTheme">
+
+
+
+
+
+
+
+
diff --git a/App/android/app/src/main/java/com/app/MainApplication.java b/App/android/app/src/main/java/com/app/MainApplication.java
index 8b11f16a..23ca3771 100755
--- a/App/android/app/src/main/java/com/app/MainApplication.java
+++ b/App/android/app/src/main/java/com/app/MainApplication.java
@@ -3,6 +3,7 @@ package com.app;
import android.app.Application;
import com.facebook.react.ReactApplication;
+import com.airbnb.android.react.maps.MapsPackage;
import com.learnium.RNDeviceInfo.RNDeviceInfo;
import ui.materialshadows.RNMaterialShadowsPackage;
import com.BV.LinearGradient.LinearGradientPackage;
@@ -29,6 +30,7 @@ public class MainApplication extends Application implements ReactApplication {
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
+ new MapsPackage(),
new RNDeviceInfo(),
new RNMaterialShadowsPackage(),
new LinearGradientPackage(),
diff --git a/App/android/settings.gradle b/App/android/settings.gradle
index 7c9cafb3..8dc9c679 100755
--- a/App/android/settings.gradle
+++ b/App/android/settings.gradle
@@ -1,4 +1,6 @@
rootProject.name = 'app'
+include ':react-native-maps'
+project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android')
include ':react-native-device-info'
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
include ':react-native-material-shadows'
@@ -11,5 +13,7 @@ include ':react-native-vector-icons'
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
+include ':react-native-maps'
+project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android')
include ':app'
diff --git a/App/app/App.js b/App/app/App.js
index 06f3ae59..fbf0aeb1 100755
--- a/App/app/App.js
+++ b/App/app/App.js
@@ -58,6 +58,7 @@ class App extends Component {
console.log(this.props.UI_loginScannerActive);
};
_tryLogin = () => {
+ this.props.waitLogin();
//console.log(this.state.text)
//this.scanner.reactivate();
this.props.login(this.state.username, this.state.text);
@@ -98,6 +99,7 @@ class App extends Component {
componentDidMount() {
//this.props.hold();
+ this.props.loginInternal();
NetInfo.isConnected.addEventListener(
"connectionChange",
this.handleConnectivityChange
@@ -140,13 +142,7 @@ class App extends Component {
};
render() {
- if (!this.state.isConnected) {
- return (
-
- cenas da vida
-
- );
- }
+
if (!this.props.logged && this.props.onHold) {
return (
@@ -228,7 +224,7 @@ class App extends Component {
onSubmitEditing={Keyboard.dismiss}
placeholder="Password"
/>
-
+ { !this.props.loadingLogin &&
Entrar
+ }
+ {this.props.alignItems &&
+
+ }
@@ -490,7 +490,8 @@ mapStateToProps = (state, props) => {
userDetails: state.apiReducer.userDetails,
modalOpen: state.apiReducer.modalOpen,
modalInfo: state.apiReducer.modalInfo,
- type: state.apiReducer.type
+ type: state.apiReducer.type,
+ loadingLogin:state.apiReducer.loadingLogin
};
};
diff --git a/App/app/Router.js b/App/app/Router.js
index 74783cfe..cdd6d7c8 100755
--- a/App/app/Router.js
+++ b/App/app/Router.js
@@ -3,16 +3,23 @@ import {
TouchableOpacity,
Text,
View,
- Image
+ Image,
+
} from 'react-native';
import {
createStackNavigator,
createAppContainer,
createSwitchNavigator,
- createBottomTabNavigator
+ createBottomTabNavigator,
+ HeaderBackButton
} from 'react-navigation';
import * as Screens from './screens';
+/*Icons*/
+import Icon from "react-native-vector-icons/Ionicons"
+import IconF from "react-native-vector-icons/Foundation"
+import IconFA from "react-native-vector-icons/FontAwesome5"
+
import AuthLoadingScreen from './screens/AuthLoading'
@@ -25,17 +32,18 @@ import Calendar from './screens/Calendar'
import Home from './screens/Home'
-
-/*Icons*/
-import Icon from "react-native-vector-icons/Ionicons"
-import IconF from "react-native-vector-icons/Foundation"
-import IconFA from "react-native-vector-icons/FontAwesome5"
import Profile from "./screens/Profile";
import editCalendar from './screens/editCalendar';
import choosePath from './screens/choosePath';
import calendarDetail from './screens/calendarDetail';
+const navigationOptions = ({navigation}) => ({
+ headerLeft: navigation.goBack(null)}/>,
+ headerStyle: {backgroundColor: 'transparent', zIndex: 100 },
+
+});
+
const AppStack = createBottomTabNavigator(
{
Calendário: {
@@ -48,15 +56,15 @@ const AppStack = createBottomTabNavigator(
)
},
},
-
+
'Jogo do...': {
screen: Jogo,
navigationOptions: {
tabBarIcon: ({tintColor}) => (
-
-
+
+
)
},
},
@@ -71,8 +79,8 @@ const AppStack = createBottomTabNavigator(
},
},
-
- Eventos: {
+
+ Eventos: {
screen: Eventos,
navigationOptions: {
@@ -82,7 +90,7 @@ const AppStack = createBottomTabNavigator(
)
},
},
-
+
Home: {
screen: Home,
navigationOptions: {
@@ -94,7 +102,6 @@ const AppStack = createBottomTabNavigator(
},
-
},
{
initialRouteName: 'Home',
@@ -120,51 +127,56 @@ const Stack = createStackNavigator({
return {
headerTitle: `${navigation.state.routes[index].routeName}`,
headerRight: (
- navigation.navigate('Profile')}>
-
+ navigation.navigate('Profile')}>
+
editar
-
+
)
}
}
- else if(navigation.state.routes[index].routeName == 'Calendário'){
+ else if (navigation.state.routes[index].routeName == 'Calendário') {
return {
headerTitle: 'Calendário',
headerRight: (
-
- navigation.navigate('Edit')}>
- FAQ
-
-
+
+ navigation.navigate('Edit')}>
+ FAQ
+
+
+
+ navigation.navigate('choosePath')}>
+ Escolher
+
+
- navigation.navigate('choosePath')}>
- Escolher
-
-
-
)
}
- }
- else if(navigation.state.routes[index].routeName == 'choosePath'){
+ }
+ else if (navigation.state.routes[index].routeName == 'choosePath') {
return {
headerTitle: 'Calendário',
headerRight: (
-
- navigation.navigate('Edit')}>
- FAQ
-
-
+
+ navigation.navigate('Edit')}>
+ FAQ
+
+
+
+ navigation.navigate('choosePath')}>
+ Escolher
+
+
- navigation.navigate('choosePath')}>
- Escolher
-
-
-
)
}
- }
+ }
else {
return {
header: null
@@ -175,17 +187,15 @@ const Stack = createStackNavigator({
Profile: {
screen: Profile
},
- Edit:{
+ Edit: {
screen: editCalendar
},
- choosePath:{
+ choosePath: {
screen: choosePath
},
- calendarDetail:{
- screen:calendarDetail
- }
-
-
+ calendarDetail: {
+ screen: calendarDetail,
+ },
});
@@ -194,7 +204,7 @@ export default createAppContainer(createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: Stack,
-
+
},
{
diff --git a/App/app/components/Nav.js b/App/app/components/Nav.js
new file mode 100644
index 00000000..eb06de50
--- /dev/null
+++ b/App/app/components/Nav.js
@@ -0,0 +1,99 @@
+import React, { Component } from 'react'
+import { StyleSheet, Text, View } from 'react-native'
+import { Icon } from 'react-native-elements'
+
+const styles = StyleSheet.create({
+ centerRow: {
+ alignItems: 'flex-start',
+ backgroundColor: 'transparent',
+ flex: 3,
+ flexDirection: 'column',
+ justifyContent: 'center',
+ },
+
+ container: {
+ backgroundColor: 'transparent',
+ borderBottomWidth: 0,
+ elevation: 0,
+ flexDirection: 'row',
+ height: 55,
+ justifyContent: 'center',
+ left: 0,
+ marginLeft: 10,
+ marginRight: 10,
+ //marginTop: 22,
+ position: 'absolute',
+ right: 0,
+ zIndex: 100,
+ },
+ icon: {
+ justifyContent: 'flex-start',
+ marginTop: 2.8,
+ },
+ iconContainer: {
+ alignSelf: 'center',
+ },
+ leftRow: {
+ backgroundColor: 'transparent',
+ flex: 1,
+ flexDirection: 'row',
+ justifyContent: 'flex-start',
+ },
+ rightRow: {
+ alignItems: 'flex-end',
+ backgroundColor: 'transparent',
+ flex: 2,
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ marginRight: 4,
+ },
+ titleText: {
+ color: '#000',
+ fontSize: 24,
+ fontWeight: '600',
+ },
+ subTitleText: {
+ color: '#000',
+ fontSize: 14,
+ fontWeight: '400',
+ },
+});
+
+class Nav extends Component {
+
+
+ render() {
+ const { navigation, title} = this.props;
+
+ return (
+
+
+
+ navigation.goBack(null)}
+ color= '#000'
+ iconStyle={styles.icon}
+ underlayColor="transparent"
+ underlineColorAndroid="transparent"
+ containerStyle={styles.iconContainer}
+ hitSlop={{ top: 15, bottom: 15, left: 15, right: 15 }}
+ />
+
+
+
+ {title}
+
+
+
+
+
+
+
+ )
+ }
+}
+
+export default Nav
\ No newline at end of file
diff --git a/App/app/screens/Scan.js b/App/app/screens/Scan.js
index 9eda08b8..fb0702ea 100644
--- a/App/app/screens/Scan.js
+++ b/App/app/screens/Scan.js
@@ -1,121 +1,174 @@
import React from 'react';
-import { View, Image, Vibration, Dimensions,Text ,Button ,TouchableOpacity } from 'react-native';
+import {View, Image, Vibration, Dimensions, Text, Button, TouchableOpacity, ActivityIndicator} from 'react-native';
import QRCodeScanner from 'react-native-qrcode-scanner';
import {UtilStyles} from '../assets/styles'
import CodeInput from 'react-native-confirmation-code-input';
import Modal from "react-native-modal";
+import {TabView, TabBar, SceneMap} from 'react-native-tab-view';
+
+import {
+ RkButton,
+ RkTheme, RkText
+} from 'react-native-ui-kitten';
-import {RkButton,
- RkTheme , RkText} from 'react-native-ui-kitten';
+import IconMI from "react-native-vector-icons/MaterialIcons"
- const SCREEN_HEIGHT = Dimensions.get("window").height;
- const SCREEN_WIDTH = Dimensions.get("window").width;
+
+const SCREEN_HEIGHT = Dimensions.get("window").height;
+const SCREEN_WIDTH = Dimensions.get("window").width;
export default class Scan extends React.Component {
_toggleModal = () =>
- this.setState({ isModalVisible: !this.state.isModalVisible });
+ this.setState({isModalVisible: !this.state.isModalVisible});
- _activate=()=>{
+ _activate = () => {
- this.setState({ isModalVisible: !this.state.isModalVisible ,reactivate:true});
+ this.setState({isModalVisible: !this.state.isModalVisible, reactivate: true});
this.scanner.reactivate();
}
onSuccess = (e) => {
- this.setState({ isModalVisible: !this.state.isModalVisible ,isActive:false});
- this.setState({code:e.data});
- };
+ this.setState({isModalVisible: !this.state.isModalVisible, isActive: false});
+ this.setState({code: e.data});
+ };
- state = {
- isActive:true,
- isRender: true,
- reactivate:false,
- isModalVisible: false,
- code:''
-
- }
- componentDidMount() {
+
+ state = {
+ isActive: true,
+ isRender: true,
+ reactivate: false,
+ isModalVisible: false,
+ code: '',
+
+ index: 0,
+ routes: [
+ {key: 'scan', title: 'Scan', icon: ''},
+ {key: 'history', title: 'Histórico', icon: 'history'},
+ {key: 'fav', title: 'Favoritos', icon: 'favorite'},
+ ],
+
+ };
+
+ componentDidMount() {
this.props.navigation.addListener('willFocus', (route) => {
- this.setState({ isRender: true })
+ this.setState({isRender: true})
});
this.props.navigation.addListener('willBlur', (route) => {
- this.setState({ isRender: false })
+ this.setState({isRender: false})
});
- }
-
- render() {
-
- {
+ }
- return (
+ render() {
-
-
- { this.state.isRender &&
-
- (
+ { this.scanner = node }}
+ ref={(node) => {
+ this.scanner = node
+ }}
reactivate={false}
-
+ cameraProps={{captureAudio: false}}
onRead={this.onSuccess.bind(this)}
-
showMarker={true}
-
- cameraStyle={{ height: SCREEN_HEIGHT }}
-
+ cameraStyle={{height: SCREEN_HEIGHT}}
fadeIn={true}
-
customMarker={
-
-
-
-
-
-
- Qr code data: {this.state.code}
-
-
-
-
-
+
+
+
+
+ Qr code data: {this.state.code}
+
+
+
+
}
- />
- }
-
- )}
-
- return (
-
-
- Show Modal
-
-
-
- Hello!
-
- Hide me!
-
-
-
+ />
+ );
+
+ const historyScreen = () => (
+
- );
- }
+ );
+
+ const favScreen = () => (
+
+
+
+ );
+
+
+ _renderLazyPlaceholder = () => {
+ return (
+
+ );
+ };
+
+ {
+
+ return (
+
+
+
+ {this.state.isRender &&
+ this.setState({index})}
+ initialLayout={{width: SCREEN_WIDTH, height: SCREEN_HEIGHT}}
+ renderIcon={({route}) => (
+
+ )}
+ />
+ }
+
+ )
+ }
+
+ return (
+
+
+ Show Modal
+
+
+
+ Hello!
+
+ Hide me!
+
+
+
+
+ );
+ }
}
RkTheme.setType('RkButton', 'dark', {
container: {
- paddingTop:10,
- backgroundColor: 'gray',
-
- borderRadius: 90,
+ paddingTop: 10,
+ backgroundColor: 'gray',
+
+ borderRadius: 90,
}
- });
+});
const rectDimensions = SCREEN_WIDTH * 0.85; // this is equivalent to 255 from a 393 device width
@@ -123,35 +176,31 @@ const rectDimensions = SCREEN_WIDTH * 0.85; // this is equivalent to 255 from a
const overlayColor = 'rgba(0,0,0,0.30)';
const styles = {
-
- recover:{
- paddingTop:10,
+
+ recover: {
+ paddingTop: 10,
color: "red",
- paddingBottom:10
+ paddingBottom: 10
},
- manual:{
-
-
+ manual: {},
- },
-
- logo:{
+ logo: {
- height:SCREEN_HEIGHT*0.35,
- width:SCREEN_WIDTH,
+ height: SCREEN_HEIGHT * 0.35,
+ width: SCREEN_WIDTH,
backgroundColor: overlayColor,
},
rectangleContainer: {
-
+
flex: 1,
alignItems: "center",
justifyContent: "center",
backgroundColor: "transparent",
-
+
},
rectangle: {
-
+
height: rectDimensions,
width: rectDimensions,
alignItems: "center",
diff --git a/App/app/screens/calendarDetail.js b/App/app/screens/calendarDetail.js
index 3c97714c..171acf8c 100644
--- a/App/app/screens/calendarDetail.js
+++ b/App/app/screens/calendarDetail.js
@@ -1,15 +1,17 @@
import * as React from 'react';
import {
- View,
- StyleSheet,
- Dimensions,
- Image,
- ScrollView,
- Text,
- Button,
- TouchableOpacity
- } from 'react-native';
+ View,
+ StyleSheet,
+ Dimensions,
+ Image,
+ ScrollView,
+ Text,
+ Button,
+ TouchableOpacity,
+ ImageBackground
+} from 'react-native';
+import {Divider, Icon, Avatar} from 'react-native-elements'
import {TabView, TabBar, SceneMap} from 'react-native-tab-view';
import {
RkButton, RkCard, RkText,
@@ -19,6 +21,7 @@ import Timeline from 'react-native-timeline-feed'
import * as Progress from 'react-native-progress';
+import NavAbsolute from '../components/Nav';
import {connect} from 'react-redux';
@@ -30,7 +33,7 @@ import Swiper from 'react-native-swiper';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import FitImage from 'react-native-fit-image';
-
+import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
const formatObj = (obj) => {
@@ -43,12 +46,19 @@ const formatObj = (obj) => {
};
-
class calendarDetail extends React.Component {
+
+ static navigationOptions = ({navigation}) => ({
+ header: (
+
+ ),
+ });
- state = {
-
- };
+
+ state = {};
componentDidMount() {
@@ -58,11 +68,10 @@ class calendarDetail extends React.Component {
}
-
_update = () => {
this.setState({user: this.props.user});
console.log(this.props.events);
- }
+ };
constructor(props) {
@@ -70,97 +79,319 @@ class calendarDetail extends React.Component {
super(props)
-
- this.data = [
-
-
-
- ]
+ this.data = []
}
- render() {
- const { navigation } = this.props;
- const info = navigation.getParam('info', 'error');
- console.log(info);
+ renderHeader = (info) => {
return (
-
- {info.name}, {info.description}
+
+
+
+
+
)
+ };
+
+ renderDescription = (info) => {
+ return (
+
+
+
+ Onde está o ramo? xD
+
+
+ {info.time === info.timeEnd ? info.time : `${info.time} - ${info.timeEnd}`}
+
+
+
+
+
+ Attendee Name
+
+ {info.Enrolled} / {info.MaxAttendees}
+
+
+
+
+ Descrição
+
+
+
+ {info.description}
+
+
+
+
+
+ )
+ };
+
+
+ renderMap = () => {
+ return (
+ {
+
+ console.log(region);
+
+ }}
+
+ />
+ )
+ };
+
+ renderAttendee = () => {
+ return (
+
+
+
+
+
+
+
+ Nome do gajo
+
+
+
+ navigation.goBack(null)}
+ color='#000'
+ iconStyle={styles.icon}
+ underlayColor="transparent"
+ underlineColorAndroid="transparent"
+ containerStyle={styles.iconContainer}
+ hitSlop={{top: 15, bottom: 15, left: 15, right: 15}}
+ />
+
+
+
+ );
+ };
+
+
+ render() {
+ const {navigation} = this.props;
+ const info = navigation.getParam('info', 'error');
+ console.log(info);
+
+ return (
+
+
+
+
+
+ {this.renderHeader(info)}
+
+ {this.renderDescription(info)}
+
+
+ Localização
+
+ {this.renderMap()}
+
+
+
+ {this.renderAttendee()}
+
+
+ )
}
-
+
}
const styles = StyleSheet.create({
-
- carreerPathContainer:{
- backgroundColor:'#CC1A17',
- height:50,
- flex:1,
- alignItems:'center',
- justifyContent:'center',
- paddingTop:15,
+
+ AttendeeContainer: {
+ flexDirection: 'row',
+ height: 55,
+ justifyContent: 'center',
+ marginLeft: 10,
+ marginRight: 10,
},
- carreerPathText:{
-
- height:50,
- color:'white',
- fontWeight:'bold',
- fontSize:20,
+
+ centerRow: {
+ alignItems: 'flex-start',
+ backgroundColor: 'transparent',
+ flex: 3,
+ flexDirection: 'column',
+ justifyContent: 'center',
+ },
+
+ leftRow: {
+ backgroundColor: 'transparent',
+ flex: 1,
+ flexDirection: 'row',
+ justifyContent: 'flex-start',
+ alignSelf: 'center'
+ },
+ rightRow: {
+ alignItems: 'flex-end',
+ backgroundColor: 'transparent',
+ flex: 2,
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ marginRight: 4,
+ alignSelf: 'center'
+ },
+
+ icon: {
+ justifyContent: 'flex-start',
+ marginTop: 2.8,
+ },
+
+ nameAttendee: {
+ alignSelf: 'center',
+ fontSize: 20,
+ fontWeight: '400',
+ color: '#000',
+ marginBottom: 10,
+ },
+
+ details: {
+ marginTop: 20,
+ flex: 1,
+ alignSelf: 'center',
+ },
+
+ infoRow: {
+ margin: 25,
+ },
+
+ ramoText: {
+ alignSelf: 'flex-start',
+ marginBottom: 5,
+ color: '#000',
+ fontSize: 20,
+ fontWeight: '400',
+ },
+
+ timeText: {
+ alignItems: 'flex-end',
+ flex: 2,
+ marginBottom: 5,
+ marginRight: 4,
+ },
+
+ mainViewStyle: {
+ flex: 1,
+ flexGrow: 1,
+ flexDirection: 'column',
+ },
+
+ scroll: {
+ backgroundColor: '#FFF',
+ flex: 1,
+ //marginBottom: 55,
+ },
+
+ cardContainer: {
+ flex: 1,
+ },
+ container: {
+ flex: 1,
+ flexDirection: 'column',
+ },
+ coverContainer: {
+ position: 'relative',
+ },
+ coverImage: {
+ height: Dimensions.get('window').width * (2 / 4),
+ width: Dimensions.get('window').width,
+ },
+ headerContainer: {
+ alignItems: 'center',
+ backgroundColor: '#FFF',
+ },
+
+
+ carreerPathContainer: {
+ backgroundColor: '#CC1A17',
+ height: 50,
+ flex: 1,
+ alignItems: 'center',
+ justifyContent: 'center',
+ paddingTop: 15,
+ },
+ carreerPathText: {
+
+ height: 50,
+ color: 'white',
+ fontWeight: 'bold',
+ fontSize: 20,
},
- companyHeader:{
- backgroundColor:'#dddddd',
- // height:150,
- borderRadius:5,
- margin:10,
- padding:10
-
-
+ companyHeader: {
+ backgroundColor: '#dddddd',
+ // height:150,
+ borderRadius: 5,
+ margin: 10,
+ padding: 10
+
+
},
- companyTitle:{
- paddingBottom:5,
- fontWeight:'bold',
- color:'#777777',
- fontSize:17,
-
- // padding:20
+ companyTitle: {
+ paddingBottom: 5,
+ fontWeight: 'bold',
+ color: '#777777',
+ fontSize: 17,
+
+ // padding:20
},
companyLogo: {
-
borderRadius: 20,
-
- },
-
- wrapper: {
-
- },
- company:{
- flex:1,
- flexDirection:'row',
- // backgroundColor:'red',
- color:'black'
+
},
- companyLogoContainer:{
- flex:1,
+ wrapper: {},
+ company: {
+ flex: 1,
+ flexDirection: 'row',
+ // backgroundColor:'red',
+ color: 'black'
+ },
+
+ companyLogoContainer: {
+ flex: 1,
justifyContent: 'center',
- width:'60%',
- // backgroundColor:'white',
- margin:20,
+ width: '60%',
+ // backgroundColor:'white',
+ margin: 20,
},
- aboutCompany:{
- width:SCREEN_WIDTH,
- flex:1,
+ aboutCompany: {
+ width: SCREEN_WIDTH,
+ flex: 1,
justifyContent: 'center',
alignItems: 'center',
}
-
-});
+});
function mapStateToProps(state, props) {
diff --git a/App/app/store/actions/api.js b/App/app/store/actions/api.js
index b7e833b0..b5466f1b 100644
--- a/App/app/store/actions/api.js
+++ b/App/app/store/actions/api.js
@@ -1,6 +1,6 @@
import { AsyncStorage } from "react-native";
-import { NetInfo } from "react-native";
+import { NetInfo , Alert} from "react-native";
var _ = require("lodash");
@@ -19,7 +19,8 @@ import {
CHANGE_GUEST,
WAIT_CHANGE,
SIGN_SESSION,
- OPEN_MODAL
+ OPEN_MODAL,
+ LOADINGLOGIN
} from "./actionTypes"; //Import the actions types constant we defined in our actions
import moment from "moment";
@@ -38,6 +39,44 @@ axios.defaults.baseURL = "http://enei2019.uingress.com/internal/api";
const map = require("lodash/fp/map").convert({ cap: false });
+
+export function waitLogin(){
+ return dispatch=>{
+ dispatch({
+ type: LOADINGLOGIN,
+
+ });
+ }
+}
+
+
+//faz autenticação com API interna
+export function loginInternal(userDetails){
+ axios.defaults.baseURL = "http://127.0.0.1:5000";
+ return dispatch => {
+
+ axios.post('/api/login',{
+ "username": "cena",
+ "password": "password"
+
+ }).then(a=>{
+ console.log("sucesso!")
+ console.log(a)
+ }).catch(p=>{
+ console.log(p)
+ })
+
+ dispatch({
+ type: OPEN_MODAL,
+
+ });
+ };
+
+
+}
+
+
+
export function openModal(info, t) {
return dispatch => {
dispatch({
@@ -613,23 +652,36 @@ export function login(user, pass) {
type: API_LOGIN,
logged: false,
failedAttempt: true,
- tokenData: "error"
+ tokenData: "error",
+ user: { Name: "" },
});
})
+ .catch(err=>{
+ console.log("error")
+ })
.then(res => res.json())
.then(parsed => {
+ console.log(parsed)
if (
parsed.error_description ==
"Provided username and password is incorrect"
) {
+ Alert.alert("Dados Inválidos","Podes sempre fazer reset da password para o email.")
+
dispatch({
type: API_LOGIN,
logged: false,
failedAttempt: true,
token: obj,
- user: { Name: "Henrique" }
+ user: { Name: "Henrique" },
+ userDetails:{},
+ waitLogin:false,
+ onHold:false
+
});
+ return;
}
+ else{
var obj = {
access_token: parsed.access_token,
expirationDateToken: Math.round(new Date().getTime() / 1000) + 3598,
@@ -648,7 +700,7 @@ export function login(user, pass) {
token: obj,
user: { Name: "Henrique" },
userDetails: details
- });
+ });}
});
};
}
diff --git a/App/app/store/reducers/api.js b/App/app/store/reducers/api.js
index 855df7f1..bca3c594 100644
--- a/App/app/store/reducers/api.js
+++ b/App/app/store/reducers/api.js
@@ -14,8 +14,11 @@ import {
TIMERWAIT_CHANGE,
SIGN_SESSION,
OPEN_MODAL,
- CLOSE_MODAL
+ CLOSE_MODAL,
+ LOADINGLOGIN
+
} from "../actions/actionTypes"; //Import the actions types constant we defined in our actions
+
import { REHYDRATE } from "redux-persist";
let apiState = {
@@ -43,7 +46,8 @@ let apiState = {
a:{},
b:{},
c:{},
- d:{}
+ d:{},
+ loadingLogin:false,
};
@@ -96,6 +100,9 @@ const apiReducer = (state = apiState, action) => {
isConnected: action.isConnected
});
+ case LOADINGLOGIN:
+ state= Object.assign({}, state, {loadingLogin:true});
+
case HOLD:
state = Object.assign({}, state, { onHold: true });
return state;
@@ -110,7 +117,9 @@ const apiReducer = (state = apiState, action) => {
token: action.token,
username: action.userDetails.username,
password: action.userDetails.password
- }
+ },
+ loadingLogin:false,
+ onHold: action.onHold
});
return state;
diff --git a/App/ios/app.xcodeproj/project.pbxproj b/App/ios/app.xcodeproj/project.pbxproj
index 45d672e3..7e95f411 100644
--- a/App/ios/app.xcodeproj/project.pbxproj
+++ b/App/ios/app.xcodeproj/project.pbxproj
@@ -60,6 +60,7 @@
BE5EAC41221B889900E92E5B /* libReactNativePermissions.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE5EAC40221B888C00E92E5B /* libReactNativePermissions.a */; };
4EBB88037B054A508BF35245 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F42241E0235464C91B24049 /* libRNDeviceInfo.a */; };
E677346A94D54E90817979B0 /* libRNDeviceInfo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */; };
+ A52E07192CD249F7B10FDA66 /* libAirMaps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C0906CC582484A7393F9B1F6 /* libAirMaps.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -440,6 +441,8 @@
5BA133418E6F4967BC5BC234 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; name = "RNDeviceInfo.xcodeproj"; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
0F42241E0235464C91B24049 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; name = "libRNDeviceInfo.a"; path = "libRNDeviceInfo.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */ = {isa = PBXFileReference; name = "libRNDeviceInfo-tvOS.a"; path = "libRNDeviceInfo-tvOS.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
+ A97F1617782E42EC83467F41 /* AirMaps.xcodeproj */ = {isa = PBXFileReference; name = "AirMaps.xcodeproj"; path = "../node_modules/react-native-maps/lib/ios/AirMaps.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
+ C0906CC582484A7393F9B1F6 /* libAirMaps.a */ = {isa = PBXFileReference; name = "libAirMaps.a"; path = "libAirMaps.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -473,6 +476,7 @@
BE104176D74E47E9A369B15A /* libRNVectorIcons.a in Frameworks */,
69E1B84AE0DF486CB1B1D226 /* libBVLinearGradient.a in Frameworks */,
4EBB88037B054A508BF35245 /* libRNDeviceInfo.a in Frameworks */,
+ A52E07192CD249F7B10FDA66 /* libAirMaps.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -667,6 +671,7 @@
664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */,
1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */,
5BA133418E6F4967BC5BC234 /* RNDeviceInfo.xcodeproj */,
+ A97F1617782E42EC83467F41 /* AirMaps.xcodeproj */,
);
name = Libraries;
sourceTree = "";
@@ -1450,6 +1455,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = appTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@@ -1461,6 +1467,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
@@ -1482,6 +1489,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = appTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@@ -1493,6 +1501,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
@@ -1516,6 +1525,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1541,6 +1551,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1572,6 +1583,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = "app-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1582,6 +1594,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
@@ -1612,6 +1625,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = "app-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1622,6 +1636,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
@@ -1651,6 +1666,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -1661,6 +1677,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
@@ -1690,6 +1707,7 @@
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
+ "$(SRCROOT)\..\node_modules\react-native-maps\lib\ios/**",
);
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -1700,6 +1718,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
diff --git a/App/package-lock.json b/App/package-lock.json
index 5409bc1a..84fa35f8 100755
--- a/App/package-lock.json
+++ b/App/package-lock.json
@@ -3059,6 +3059,10 @@
"ansi-styles": "^3.2.0"
}
},
+ "react-native-maps": {
+ "version": "github:expo/react-native-maps#e6f98ff7272e5d0a7fe974a41f28593af2d77bb2",
+ "from": "github:expo/react-native-maps#v0.22.1-exp.0"
+ },
"react-native-screens": {
"version": "1.0.0-alpha.22",
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.22.tgz",
@@ -7965,8 +7969,9 @@
}
},
"react-native-maps": {
- "version": "github:expo/react-native-maps#e6f98ff7272e5d0a7fe974a41f28593af2d77bb2",
- "from": "github:expo/react-native-maps#v0.22.1-exp.0"
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-0.23.0.tgz",
+ "integrity": "sha512-qxOIQGsDtQXQlSJdXMW1wg8pvLaVYdbiIolB7tZTTgTGgIA/hDxXwZbQZ08c4KDD6/VTk8krfd1APaHkqvh6og=="
},
"react-native-material-buttons": {
"version": "0.5.0",
diff --git a/App/package.json b/App/package.json
index 77dcf036..5cf0dd02 100755
--- a/App/package.json
+++ b/App/package.json
@@ -31,6 +31,7 @@
"react-native-linear-gradient": "^2.5.3",
"react-native-loader": "^1.2.1",
"react-native-loading-spinner-overlay": "^1.0.1",
+ "react-native-maps": "^0.23.0",
"react-native-material-dropdown": "^0.11.1",
"react-native-material-shadows": "0.0.2",
"react-native-modal": "^7.0.2",