This commit is contained in:
henrydays 2019-03-10 00:00:54 +00:00
parent 90b6337d76
commit 8d25174671
9 changed files with 1853 additions and 1846 deletions

View File

@ -1,555 +1,504 @@
import React, {Component} from 'react'; import React, { Component } from "react";
import { import {
Platform, Platform,
StyleSheet, StyleSheet,
Text, Text,
View, View,
StatusBar, StatusBar,
Dimensions, Dimensions,
Image, Image,
ActivityIndicator, ActivityIndicator,
Button, Button,
TouchableHighlight, TouchableHighlight,
Keyboard, Keyboard,
ImageBackground, ImageBackground,
LinearGradient, LinearGradient,
TouchableOpacity, TouchableOpacity,
TextInput, TextInput,
NetInfo, NetInfo,
Animated Animated
} from "react-native";
} from 'react-native'; import { bindActionCreators } from "redux";
import { connect } from "react-redux";
import {bindActionCreators} from 'redux'; import QRCodeScanner from "react-native-qrcode-scanner";
import {connect} from 'react-redux'; import { UtilStyles } from "./assets/styles";
import QRCodeScanner from 'react-native-qrcode-scanner'; import * as Actions from "./store/actions";
import {UtilStyles} from './assets/styles'
import * as Actions from './store/actions'; import { RkButton, RkTheme, RkText, RkTextInput } from "react-native-ui-kitten";
import {RkButton, RkTheme, RkText, RkTextInput} from 'react-native-ui-kitten';
import Modal from "react-native-modal"; import Modal from "react-native-modal";
import Router from './Router' import Router from "./Router";
import Icon from "react-native-vector-icons/Ionicons" import Icon from "react-native-vector-icons/Ionicons";
const SCREEN_HEIGHT = Dimensions.get("window").height; const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width; const SCREEN_WIDTH = Dimensions.get("window").width;
import Swiper from 'react-native-swiper'; import Swiper from "react-native-swiper";
var TimerMixin = require('react-timer-mixin'); var TimerMixin = require("react-timer-mixin");
function handleConnectivityChange() { function handleConnectivityChange() {
console.log("asdasd"); console.log("asdasd");
} }
class App extends Component { class App extends Component {
handleConnectivityChange = isConnected => { handleConnectivityChange = isConnected => {
this.setState({ isConnected }); this.setState({ isConnected });
} };
_activate=()=>{ _activate = () => {
this.setState({ isModalVisible: !this.state.isModalVisible });
this.setState({ isModalVisible: !this.state.isModalVisible}); this.scanner.reactivate();
this.scanner.reactivate(); };
_scanQr = () => {
} this.props.openScannerLogin();
_scanQr=()=>{ console.log(this.props.UI_loginScannerActive);
this.props.openScannerLogin() };
console.log(this.props.UI_loginScannerActive) _tryLogin = () => {
} //console.log(this.state.text)
_tryLogin=()=>{ //this.scanner.reactivate();
this.props.login(this.state.username, this.state.text);
//console.log(this.state.text) };
//this.scanner.reactivate();
this.props.login(this.state.username, this.state.text);
}
_toggleModal = () =>
this.setState({ isModalVisible: !this.state.isModalVisible });
constructor(props) {
super(props);
this.state = {
token: {valid: false},
tokenData: '',
onHold: true,
logged: false,
isModalVisible: false,
state : {text: ''},
username:'QR code',
failedAttempt: false,
push:4,
UI_loginScannerActive:false,
userDetails:{username:'', password:''},
isConnected: true
};
}
_print=()=>{
console.log("hello")
this.setState({push:0})
}
checkValue=(e)=>{
console.log("check"+e)
}
_handleConnectionChange = (isConnected) => {
this.props.connectionState(true);
};
componentDidMount() {
this.props.hold();
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
this.setState({isModalVisible: false})
//verifica se o utilizador tem token guardado
this.props.checkUser(this.props.userDetails);
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
}
_keyboardDidShow () {
//alert('Keyboard Shown');
// this.setState({push:0})
}
_keyboardDidHide () {
//this.setState({push:4})
}
onSuccess = (e) => {
// this.setState({ isModalVisible: !this.state.isModalVisible });
// this.props.login(e.data, 'f8908cc0');
this.props.closeLoginQRScan();
this.setState({username:e.data})
console.log("QR code lido");
_toggleModal = () =>
this.setState({ isModalVisible: !this.state.isModalVisible });
constructor(props) {
super(props);
this.state = {
token: { valid: false },
tokenData: "",
onHold: true,
logged: false,
isModalVisible: false,
state: { text: "" },
username: "QR code",
failedAttempt: false,
push: 4,
UI_loginScannerActive: false,
userDetails: { username: "", password: "" },
isConnected: true,
modalOpen: false
}; };
}
_print = () => {
console.log("hello");
this.setState({ push: 0 });
};
checkValue = e => {
console.log("check" + e);
};
_handleConnectionChange = isConnected => {
this.props.connectionState(true);
};
render() { componentDidMount() {
if (!this.state.isConnected) { //this.props.hold();
return ( NetInfo.isConnected.addEventListener(
<View> "connectionChange",
<Text>cenas da vida</Text> this.handleConnectivityChange
</View> );
);
}
if (!this.props.logged && this.props.onHold) {
this.setState({ isModalVisible: false });
//verifica se o utilizador tem token guardado
this.props.checkUser(this.props.userDetails);
this.keyboardDidShowListener = Keyboard.addListener(
"keyboardDidShow",
this._keyboardDidShow
);
this.keyboardDidHideListener = Keyboard.addListener(
"keyboardDidHide",
this._keyboardDidHide
);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener(
"connectionChange",
this.handleConnectivityChange
);
}
return ( _keyboardDidShow() {
<View style={UtilStyles.containerLoading}> //alert('Keyboard Shown');
// this.setState({push:0})
<ActivityIndicator size="large" color="red"/> }
</View>
)
} _keyboardDidHide() {
else //this.setState({push:4})
{ }
onSuccess = e => {
// this.setState({ isModalVisible: !this.state.isModalVisible });
// this.props.login(e.data, 'f8908cc0');
this.props.closeLoginQRScan();
this.setState({ username: e.data });
// console.log('token... '+ this.props.logged) console.log("QR code lido");
};
//se existir token render() {
if (!this.state.isConnected) {
if (this.props.logged ) { return (
<View>
return ( <Text>cenas da vida</Text>
</View>
<Router></Router> );
)
}
return (
<View style={styles.slide2}>
<Modal isVisible={this.props.UI_loginScannerActive}>
<View style={{ flex: 1 , backgroundColor:'white'}}>
<Button onPress={this.props.closeLoginQRScan} title={"Fechar scanner"}> </Button>
<QRCodeScanner
onRead={this.onSuccess}
cameraStyle={ styles.cameraContainer}
/>
</View>
</Modal>
<View style={{ width:'100%',
justifyContent: 'center',
alignItems: 'center',}}>
<Image style={styles.logo2} source={require('./assets/img/logo2.png')}/>
</View>
<View styles={styles.loginContainer}>
<View style={styles.inputSection}>
<TextInput
style={styles.input}
placeholder={this.state.username}
onChangeText={(searchString) => {this.setState({searchString})}}
maxLength={15}
underlineColorAndroid="transparent"
/>
<TouchableOpacity onPress={this._scanQr}>
<View style={styles.scanQR}>
<Icon style={styles.searchIcon} name="ios-qr-scanner" size={30} color="#000"/>
<Text>Scan QR</Text>
</View>
</TouchableOpacity>
</View>
<TextInput style={styles.passwordInput}
onFocus={this._print}
maxLength={10}
blurOnSubmit ={true}
secureTextEntry={true}
onChangeText={(text) => this.setState({text})}
clearButtonMode='always'
value={this.state.text}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
placeholder='Password' />
<RkButton rkType='dark' style={styles.loginBtn} onPress={this._tryLogin}>Entrar</RkButton>
</View>
<View style={ styles.buttons }>
<TouchableOpacity
style={styles.button}>
<Icon name="logo-facebook" size={40}/>
</TouchableOpacity>
<TouchableOpacity
style={styles.button}>
<Icon name="logo-instagram" size={40}/>
</TouchableOpacity>
<TouchableOpacity
style={styles.button}>
<Icon name="md-heart" size={40}/>
</TouchableOpacity>
</View>
<View style={styles.footer}>
<View style={styles.textRow}>
<RkText rkType='primary3'>Não sabes a password?</RkText>
<RkButton rkType='clear' onPress={this.onSignUpButtonPressed}>
<TouchableOpacity>
<RkText style={{color:'red'}} kType='header6'>Recuperar Password</RkText>
</TouchableOpacity>
</RkButton>
</View>
</View>
</View>
);
}
} }
if (!this.props.logged && this.props.onHold) {
return (
<View style={UtilStyles.containerLoading}>
<ActivityIndicator size="large" color="red" />
</View>
);
} else {
// console.log('token... '+ this.props.logged)
//se existir token
if (this.props.logged) {
return <Router />;
}
return (
<View style={styles.slide2}>
<Modal isVisible={this.props.UI_loginScannerActive}>
<View style={{ flex: 1, backgroundColor: "white" }}>
<Button
onPress={this.props.closeLoginQRScan}
title={"Fechar scanner"}
>
{" "}
</Button>
<QRCodeScanner
onRead={this.onSuccess}
cameraStyle={styles.cameraContainer}
/>
</View>
</Modal>
<View
style={{
width: "100%",
justifyContent: "center",
alignItems: "center"
}}
>
<Image
style={styles.logo2}
source={require("./assets/img/logo2.png")}
/>
</View>
<View styles={styles.loginContainer}>
<View style={styles.inputSection}>
<TextInput
style={styles.input}
placeholder={this.state.username}
onChangeText={searchString => {
this.setState({ searchString });
}}
maxLength={15}
underlineColorAndroid="transparent"
/>
<TouchableOpacity onPress={this._scanQr}>
<View style={styles.scanQR}>
<Icon
style={styles.searchIcon}
name="ios-qr-scanner"
size={30}
color="#000"
/>
<Text>Scan QR</Text>
</View>
</TouchableOpacity>
</View>
<TextInput
style={styles.passwordInput}
onFocus={this._print}
maxLength={10}
blurOnSubmit={true}
secureTextEntry={true}
onChangeText={text => this.setState({ text })}
clearButtonMode="always"
value={this.state.text}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
placeholder="Password"
/>
<RkButton
rkType="dark"
style={styles.loginBtn}
onPress={this._tryLogin}
>
Entrar
</RkButton>
</View>
<View style={styles.buttons}>
<TouchableOpacity style={styles.button}>
<Icon name="logo-facebook" size={40} />
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Icon name="logo-instagram" size={40} />
</TouchableOpacity>
<TouchableOpacity style={styles.button}>
<Icon name="md-heart" size={40} />
</TouchableOpacity>
</View>
<View style={styles.footer}>
<View style={styles.textRow}>
<RkText rkType="primary3">Não sabes a password?</RkText>
<RkButton rkType="clear" onPress={this.onSignUpButtonPressed}>
<TouchableOpacity>
<RkText style={{ color: "red" }} kType="header6">
Recuperar Password
</RkText>
</TouchableOpacity>
</RkButton>
</View>
</View>
</View>
);
}
}
} }
RkTheme.setType("RkButton", "dark", {
container: {
paddingTop: 10,
backgroundColor: "gray",
RkTheme.setType('RkButton', 'dark', { borderRadius: 90
container: { }
paddingTop: 10,
backgroundColor: 'gray',
borderRadius: 90,
}
}); });
const rectDimensions = SCREEN_WIDTH * 0.85; // this is equivalent to 255 from a 393 device width const rectDimensions = SCREEN_WIDTH * 0.85; // this is equivalent to 255 from a 393 device width
const overlayColor = 'rgba(0,0,0,0.30)'; const overlayColor = "rgba(0,0,0,0.30)";
const styles = { const styles = {
cameraContainer:{ cameraContainer: {
// height: Dimensions.get('window').height , // height: Dimensions.get('window').height ,
}, },
passwordInput:{ passwordInput: {
borderRadius: 90, borderRadius: 90,
borderColor:'#bfbdbd',
borderWidth: 1,
marginTop:20,
marginBottom:20,
width:SCREEN_WIDTH*0.8,
backgroundColor: 'white',
borderRadius: 90, borderColor: "#bfbdbd",
height: SCREEN_HEIGHT*0.08, borderWidth: 1,
borderColor:'#bfbdbd', marginTop: 20,
borderWidth: 1, marginBottom: 20,
paddingLeft:SCREEN_WIDTH*0.05, width: SCREEN_WIDTH * 0.8,
},
scanQRText:{
paddingTop:50 backgroundColor: "white",
// paddingTop:20,
}, borderRadius: 90,
scanQR:{ height: SCREEN_HEIGHT * 0.08,
borderColor: "#bfbdbd",
//flexDirection: 'row', borderWidth: 1,
paddingTop:5, paddingLeft: SCREEN_WIDTH * 0.05
backgroundColor:10, },
scanQRText: {
width:80, paddingTop: 50
paddingLeft:10, // paddingTop:20,
backgroundColor:'#f24b4b', },
borderBottomRightRadius:90, scanQR: {
borderTopRightRadius:90, //flexDirection: 'row',
height:'100%', paddingTop: 5,
backgroundColor: 10,
},
inputSection: {
flexDirection: 'row',
backgroundColor: '#fff',
backgroundColor: 'white',
borderRadius: 90, width: 80,
height: SCREEN_HEIGHT*0.08, paddingLeft: 10,
borderColor:'#bfbdbd', backgroundColor: "#f24b4b",
borderWidth: 1, borderBottomRightRadius: 90,
borderTopRightRadius: 90,
height: "100%"
},
inputSection: {
flexDirection: "row",
backgroundColor: "#fff",
}, backgroundColor: "white",
searchIcon: {
paddingLeft:10
},
input: { borderRadius: 90,
height: SCREEN_HEIGHT * 0.08,
borderColor: "#bfbdbd",
borderWidth: 1
flex: 1, },
paddingRight: 10, searchIcon: {
paddingLeft: 10
},
paddingLeft: 0,
paddingLeft:SCREEN_WIDTH*0.05,
color: '#424242',
},
textRow:{
marginBottom:40
},
loginContainer:{
width: '100%',
height: '30%',
justifyContent: 'center',
alignItems: 'center'
},
loginBtn:{
marginTop:10,
marginBottom:20,
marginLeft: '25%',
},
button: {
borderWidth:1,
borderColor:'rgba(0,0,0,0.2)',
alignItems:'center',
justifyContent:'center',
width:60,
height:60,
backgroundColor:'#fff',
borderRadius:100,
marginRight: 10,
marginLeft:10
},
footer: {},
buttons: { input: {
flexDirection: 'row', flex: 1,
marginBottom: 24, paddingRight: 10,
marginHorizontal: 24,
marginTop:24,
justifyContent: 'space-around',
},
logoContainer:{ paddingLeft: 0,
paddingLeft: SCREEN_WIDTH * 0.05,
color: "#424242"
},
textRow: {
marginBottom: 40
},
loginContainer: {
width: "100%",
height: "30%",
justifyContent: "center",
alignItems: "center"
},
loginBtn: {
marginTop: 10,
marginBottom: 20,
marginLeft: "25%"
},
width:'100%', button: {
borderWidth: 1,
justifyContent: 'center', borderColor: "rgba(0,0,0,0.2)",
alignItems: 'center', alignItems: "center",
marginTop:200 justifyContent: "center",
width: 60,
height: 60,
backgroundColor: "#fff",
borderRadius: 100,
marginRight: 10,
marginLeft: 10
},
footer: {},
}, buttons: {
flexDirection: "row",
marginBottom: 24,
marginHorizontal: 24,
marginTop: 24,
justifyContent: "space-around"
},
logo2:{ logoContainer: {
width: "100%",
// flex: 1,
// resizeMode: 'contain',
width: 200, height: 200,
}, justifyContent: "center",
wrapper: { alignItems: "center",
}, marginTop: 200
slide1: { },
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
slide2: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
slide3: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
color:'black',
backgroundColor: 'white',
},
text: {
color: '#fff',
fontSize: 30,
fontWeight: 'bold',
},
recover: {
paddingTop: 10,
color: "red",
paddingBottom: 10
},
manual: {},
logo: { logo2: {
// flex: 1,
// resizeMode: 'contain',
width: 200,
height: 200
},
wrapper: {},
slide1: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "white"
},
slide2: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "white"
},
slide3: {
flex: 1,
justifyContent: "center",
alignItems: "center",
color: "black",
backgroundColor: "white"
},
text: {
color: "#fff",
fontSize: 30,
fontWeight: "bold"
},
recover: {
paddingTop: 10,
color: "red",
paddingBottom: 10
},
manual: {},
height: SCREEN_HEIGHT * 0.35, logo: {
width: SCREEN_WIDTH, height: SCREEN_HEIGHT * 0.35,
backgroundColor: overlayColor, width: SCREEN_WIDTH,
}, backgroundColor: overlayColor
rectangleContainer: { },
rectangleContainer: {
flex: 1,
alignItems: "center",
justifyContent: "center",
backgroundColor: "transparent"
},
flex: 1, rectangle: {
alignItems: "center", height: rectDimensions,
justifyContent: "center", width: rectDimensions,
backgroundColor: "transparent", alignItems: "center",
justifyContent: "center",
backgroundColor: "transparent"
},
}, topOverlay: {
flex: 1,
backgroundColor: overlayColor,
justifyContent: "center",
alignItems: "center"
},
rectangle: { bottomOverlay: {
flex: 1,
height: SCREEN_HEIGHT,
width: SCREEN_WIDTH,
backgroundColor: overlayColor,
paddingBottom: SCREEN_WIDTH * 0.2
},
height: rectDimensions, leftAndRightOverlay: {
width: rectDimensions, height: rectDimensions,
alignItems: "center", width: SCREEN_WIDTH,
justifyContent: "center", backgroundColor: overlayColor
backgroundColor: "transparent" }
},
topOverlay: {
flex: 1,
backgroundColor: overlayColor,
justifyContent: "center",
alignItems: "center"
},
bottomOverlay: {
flex: 1,
height: SCREEN_HEIGHT,
width: SCREEN_WIDTH,
backgroundColor: overlayColor,
paddingBottom: SCREEN_WIDTH * 0.2
},
leftAndRightOverlay: {
height: rectDimensions,
width: SCREEN_WIDTH,
backgroundColor: overlayColor
},
}; };
RkTheme.setType('RkTextInput', 'frame', { RkTheme.setType("RkTextInput", "frame", {
input: { input: {
backgroundColor: 'white', backgroundColor: "white",
marginLeft: 0, marginLeft: 0,
marginHorizontal: 0, marginHorizontal: 0,
borderRadius: 5 borderRadius: 5
}, },
color: 'gray', color: "gray",
backgroundColor: 'gray', backgroundColor: "gray",
borderRadius: 10, borderRadius: 10,
container: { container: {
paddingHorizontal: 20 paddingHorizontal: 20
} }
}); });
mapStateToProps = (state, props) => { mapStateToProps = (state, props) => {
return {
return { token: state.apiReducer.token,
token: state.apiReducer.token, loggedIn: state.apiReducer.loggedIn,
loggedIn: state.apiReducer.loggedIn, onHold: state.apiReducer.onHold,
onHold: state.apiReducer.onHold, logged: state.apiReducer.logged,
logged: state.apiReducer.logged, failedAttempt: state.apiReducer.failedAttempt,
failedAttempt:state.apiReducer.failedAttempt, UI_loginScannerActive: state.uiReducer.UI_loginScannerActive,
UI_loginScannerActive: state.uiReducer.UI_loginScannerActive, userDetails: state.apiReducer.userDetails,
userDetails: state.apiReducer.userDetails, modalOpen: state.apiReducer.modalOpen,
} modalInfo: state.apiReducer.modalInfo,
type: state.apiReducer.type
};
}; };
mapDispatchToProps = (dispatch) => { mapDispatchToProps = dispatch => {
return bindActionCreators(Actions, dispatch);
return bindActionCreators(Actions, dispatch);
}; };
export default connect(
export default connect(mapStateToProps, mapDispatchToProps)(App); mapStateToProps,
mapDispatchToProps
)(App);

View File

@ -1,61 +1,47 @@
import * as React from 'react'; import * as React from "react";
import { import { View, StyleSheet, Dimensions, Text, Button } from "react-native";
View, import { TabView, TabBar, SceneMap } from "react-native-tab-view";
StyleSheet,
Dimensions,
Text,
Button
} from 'react-native';
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
const FirstRoute = () => ( const FirstRoute = () => (
<View style={[styles.scene, { backgroundColor: '#ff4081' }]} /> <View style={[styles.scene, { backgroundColor: "#ff4081" }]} />
); );
const SecondRoute = () => ( const SecondRoute = () => (
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} /> <View style={[styles.scene, { backgroundColor: "#673ab7" }]} />
); );
const ThirdRoute = () => ( const ThirdRoute = () => (
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} /> <View style={[styles.scene, { backgroundColor: "#673ab7" }]} />
); );
const FourthRoute = () => ( const FourthRoute = () => (
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} /> <View style={[styles.scene, { backgroundColor: "#673ab7" }]} />
); );
export default class Eventos extends React.Component {
export default class Eventos extends React.Component {
state = { state = {
index: 0, index: 0,
routes: [ routes: [
{ key: 'first', title: 'Festarola' }, { key: "first", title: "Festarola" },
{ key: 'second', title: 'Febrada' }, { key: "second", title: "Febrada" },
{ key: 'third', title: 'Rally' }, { key: "third", title: "Rally" },
{ key: 'fourth', title: 'Peddy' }, { key: "fourth", title: "Peddy" }
]
};
], render() {
}; return (
<View>
render() { <Button
return (
<View>
<Button
title="Febrada" title="Febrada"
onPress={() => this.props.navigation.navigate('febrada')} onPress={() => this.props.navigation.navigate("febrada")}
/> />
</View> </View>
); );
} }
} }
const styles = StyleSheet.create({ const styles = StyleSheet.create({
scene: { scene: {
flex: 1, flex: 1
}, }
}); });

View File

@ -1,458 +1,504 @@
import * as React from 'react'; import * as React from "react";
import { import {
View, View,
StyleSheet, StyleSheet,
Dimensions, Dimensions,
Image, ScrollView,
ScrollView, Text,
Text, Button,
Button, TouchableOpacity,
TouchableOpacity, Picker,
Picker, ActivityIndicator,
CheckBox,
ActivityIndicator, FlatList
SectionList, } from "react-native";
FlatList import moment from "moment";
} from 'react-native';
import moment from 'moment'
import {TabView, TabBar, SceneMap} from 'react-native-tab-view'; import Modal from "react-native-modal";
import {
RkButton, RkCard, RkText,
RkTheme
} from 'react-native-ui-kitten';
import Timeline from 'react-native-timeline-feed'
import * as Progress from 'react-native-progress';
import {connect} from 'react-redux'; import * as Progress from "react-native-progress";
import {bindActionCreators} from 'redux'; import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import * as Actions from "../store/actions"; //Import your actionss
import AwesomeAlert from 'react-native-awesome-alerts';
import * as Actions from '../store/actions'; //Import your actionss
import Swiper from 'react-native-swiper';
const SCREEN_HEIGHT = Dimensions.get("window").height; const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width; const SCREEN_WIDTH = Dimensions.get("window").width;
import FitImage from 'react-native-fit-image';
import { Dropdown } from 'react-native-material-dropdown'; import FitImage from "react-native-fit-image";
import {Card, Divider} from 'react-native-elements'
import IconF from "react-native-vector-icons/Foundation"
import LinearGradient from 'react-native-linear-gradient';
import ProgressBarAnimated from 'react-native-progress-bar-animated';
import IconFA from "react-native-vector-icons/FontAwesome5"
const formatObj = (obj) => {
let a = {};
a.push({})
return a
};
import { Divider } from "react-native-elements";
import LinearGradient from "react-native-linear-gradient";
import IconFA from "react-native-vector-icons/FontAwesome5";
class choosePath extends React.Component { class choosePath extends React.Component {
_verifySession = Id => {
_verifySession=(Id)=>{ var sessions = this.props.user.Sessions;
for (let key in sessions) {
var sessions= this.props.user.Sessions if (sessions[key].Id == Id) return true;
for(let key in sessions){ // cenas.push(result[key]);
console.log();
if(sessions[key].Id==Id)
return true
// cenas.push(result[key]);
console.log();
}
} }
static navigationOptions = ({ navigation }) => ({ };
static navigationOptions = ({ navigation }) => ({
headerTitleStyle : {textAlign: 'center',alignSelf:'center'}, headerTitleStyle: { textAlign: "center", alignSelf: "center" },
headerStyle:{ headerStyle: {
backgroundColor:'rgba(0,0,0,0)', backgroundColor: "rgba(0,0,0,0)",
shadowRadius:0, shadowRadius: 0,
elevation:0 elevation: 0
}, }
}); });
state = { state = {
calendar:{}, calendar: {},
guest:'9' guest: "9"
};
_mount = () => {
var sessions = this.props.sessions;
for (let key in sessions) {
if (sessions[key].Name == "IA") {
this.setState({ guest: "9" });
}
}
};
componentDidMount() {
// this.props.getEvents(this.props.user);
this.props.getAvailableGuestlists(this.props.userDetails.token);
this.props.getSessions(this.props.userDetails.token);
this._mount();
//console.log('didMount');
// console.log(this.props.events);
}
_update = () => {
this.setState({ user: this.props.user });
console.log(this.props.events);
};
_findPath = id => {
var sessions = this.props.sessions;
for (let key in sessions) {
if (sessions[key].Name == id) {
return true;
}
}
return false;
};
constructor() {
super();
this.state = {
showAlert:true,
Blocks: [],
onHoldBlocks: true,
checked: true,
modalVisible: false,
isModalVisible: false,
}; };
_mount=()=>{ this.data = [];
}
onPress = () => {
};
var sessions= this.props.sessions _s() {
for(let key in sessions){
if(sessions[key].Name=='IA'){
this.setState({guest:'9'})
}
}
}
componentDidMount() {
// this.props.getEvents(this.props.user);
this.props.getAvailableGuestlists(this.props.userDetails.token)
this.props.getSessions(this.props.userDetails.token)
this._mount()
//console.log('didMount');
// console.log(this.props.events);
}
_update = () => {
this.setState({user: this.props.user});
console.log(this.props.events);
}
_findPath=(id)=> {
var sessions= this.props.sessions this.props.signSession(this.props.userDetails.token, item[index].Id);
}
getCareerPaths = () => {
this.props.getAvailableGuestlists(this.props.userDetails.token);
console.log(this.props.calendar);
};
_keyExtractor = (item, index) => item.id;
for(let key in sessions){ _renderItem = ({ item }) => (
<MyListItem
if(sessions[key].Name==id){ id={item.id}
onPressItem={this._onPressItem}
return true; selected={!!this.state.selected.get(item.id)}
} title={item.title}
}
return false
}
constructor() {
super()
this.state={
Blocks:[],
onHoldBlocks:true,
checked:true
}
this.data = [
]
}
getCareerPaths=()=>{
this.props.getAvailableGuestlists(this.props.userDetails.token)
console.log(this.props.calendar)
}
_keyExtractor = (item, index) => item.id;
_renderItem = ({item}) => (
<MyListItem
id={item.id}
onPressItem={this._onPressItem}
selected={!!this.state.selected.get(item.id)}
title={item.title}
/>
);
_onPressItem = (id) => {
// updater functions are preferred for transactional updates
this.setState((state) => {
// copy the map rather than modifying state.
const selected = new Map(state.selected);
selected.set(id, !selected.get(id)); // toggle
return {selected};
});
};
_render=({item})=>{
<Text>Cenas: {item.Name}</Text>
}
render() {
return (
<ScrollView style={styles.page}>
{this._findPath('IA') && <LinearGradient colors={[ '#D95856', '#CC1A17']} style={styles.linearGradient}>
<Text style={{margin:15,marginBottom:0, fontWeight:'bold', color:'white'}}> Empresa responsável: </Text>
<View style={styles.companyContainer}>
<View style={styles.companyDescription}>
<Text style={{fontSize:16, fontWeight:'bold', margin:6, color:'white'}}>Critical Software</Text>
<Text style={{margin:6, marginTop:0, color:'white'}}>A CRITICAL Software fornece sistemas e serviços de software para segurança e
aplicações essenciais aos negócios.</Text>
</View>
<View style={styles.companyLogo}>
<FitImage
source={{ uri: 'https://upload.wikimedia.org/wikipedia/commons/8/8a/CSW_Gradiente_rgb.png' }}
style={styles.fitImage}
/>
</View>
</View>
</LinearGradient>}
{this._findPath('NET') && <LinearGradient colors={[ '#5887FF', '#715AFF']} style={styles.linearGradient}>
<Text style={{margin:15,marginBottom:0, fontWeight:'bold', color:'white'}}> Empresa responsável: </Text>
<View style={styles.companyContainer}>
<View style={styles.companyDescription}>
<Text style={{fontSize:16, fontWeight:'bold', margin:6, color:'white'}}>Altice</Text>
<Text style={{margin:6, marginTop:0, color:'white'}}>Altice é uma multinacional neerlandesa de telecomunicações, conteúdos, media, entretenimento e publicidade.</Text>
</View>
<View style={styles.companyLogo}>
<FitImage
source={{ uri: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t' }}
style={styles.fitImage}
/>
</View>
</View>
</LinearGradient>}
<View style={{flex:1,width:SCREEN_WIDTH*0.7, alignContent:'center'}}>
<View style={styles.pickerCareer}>
<Picker
selectedValue={this.state.guest}
style={{width:'100%'}}
onValueChange={(itemValue, itemIndex) =>{
this.setState({guest: itemValue})
this.props.timerChangeGuest();
this.props.waitChangeGuest();
this.props.changeGuestList(this.props.userDetails.token,itemValue)
// this.props.waitChangeGuest();
// this.props.getAvailableSessions(this.props.userDetails.token);
// this.props.waitChangeGuest();
// this.props.getSessionBlocks(this.props.sessions)
}
}>
<Picker.Item label="Escolhe o teu career path!" value="0" />
<Picker.Item label="Inteligência Artificial" value="9" />
<Picker.Item label="Redes e Segurança" value="10" />
<Picker.Item label="Data Science" value="15" />
<Picker.Item label="Desenvolvimento Web" value="14" />
<Picker.Item label="Internet das Coisas" value="12" />
<Picker.Item label="Desenvolvimento Mobile" value="11" />
</Picker>
</View>
<View style={{width:SCREEN_WIDTH}}>
{
!this.props.changingGuest &&<FlatList
data={this.props.Blocks}
renderItem={({item, index}) => <View style={styles.block}>
<View style={styles.time}>
<Text style={
{
margin:10,
fontSize:25,
color:'#CC1A17',
marginBottom:0
}
}>
{moment(item[0].SessionStart).format('HH:mm')}</Text>
<Text style={{marginLeft:20}}>às</Text>
<Text style={
{
margin:10,
fontSize:25,
color:'#CC1A17',
marginTop:5
}
}>
{moment(item[0].SessionEnd).format('HH:mm')}</Text>
</View>
<View style={styles.sessions}>
<FlatList
data={item}
renderItem={({data, index}) => <View><View style={styles.session}>
{ this._verifySession(item[index].Id) &&
<TouchableOpacity>
<IconFA name="check-square" size={30} color={'#CC1A17'}/>
</TouchableOpacity>
}{
!this._verifySession(item[index].Id)
&&
<TouchableOpacity>
<IconFA name="square" size={30}/>
</TouchableOpacity>
}
<TouchableOpacity><View style={styles.sessionInfo}>
<Text style={styles.sessionTitle}>{item[index].Name}</Text>
<Text style={{marginTop:10, marginBottom:5}}>{item[index].MaxAttendees - item[index].Enrolled} Lugares disponíveis</Text>
<Progress.Bar color={'#000000'} progress={(item[index].Enrolled/item[index].MaxAttendees)} unfilledColor={'white'} width={170}/>
</View></TouchableOpacity>
</View>
<Divider style={{ backgroundColor: '#eeeeee' }} />
</View>}
/> />
</View> );
</View>}
/>}</View>
_toggleModal = () =>
this.setState({ isModalVisible: !this.state.isModalVisible });
</View >
{(this.props.changingGuest || this.props.Blocks==true) &&
<ActivityIndicator size="large" color="red" style={{flex:1, alignContent:'center'}}/>
}
</ScrollView> _onPressItem = id => {
); // updater functions are preferred for transactional updates
} this.setState(state => {
// copy the map rather than modifying state.
const selected = new Map(state.selected);
selected.set(id, !selected.get(id)); // toggle
return { selected };
});
};
_render = ({ item }) => {
<Text>Cenas: {item.Name}</Text>;
};
render() {
return (
<View>
<ScrollView style={styles.page}>
{this._findPath("IA") && (
<LinearGradient
colors={["#D95856", "#CC1A17"]}
style={styles.linearGradient}
>
<Text
style={{
margin: 15,
marginBottom: 0,
fontWeight: "bold",
color: "white"
}}
>
{" "}
Empresa responsável:{" "}
</Text>
<View style={styles.companyContainer}>
<View style={styles.companyDescription}>
<Text
style={{
fontSize: 16,
fontWeight: "bold",
margin: 6,
color: "white"
}}
>
Critical Software
</Text>
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
A CRITICAL Software fornece sistemas e serviços de software
para segurança e aplicações essenciais aos negócios.
</Text>
</View>
<View style={styles.companyLogo}>
<FitImage
source={{
uri:
"https://upload.wikimedia.org/wikipedia/commons/8/8a/CSW_Gradiente_rgb.png"
}}
style={styles.fitImage}
/>
</View>
</View>
</LinearGradient>
)}
{this._findPath("NET") && (
<LinearGradient
colors={["#5887FF", "#715AFF"]}
style={styles.linearGradient}
>
<Text
style={{
margin: 15,
marginBottom: 0,
fontWeight: "bold",
color: "white"
}}
>
{" "}
Empresa responsável:{" "}
</Text>
<View style={styles.companyContainer}>
<View style={styles.companyDescription}>
<Text
style={{
fontSize: 16,
fontWeight: "bold",
margin: 6,
color: "white"
}}
>
Altice
</Text>
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
Altice é uma multinacional neerlandesa de telecomunicações,
conteúdos, media, entretenimento e publicidade.
</Text>
</View>
<View style={styles.companyLogo}>
<FitImage
source={{
uri:
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t"
}}
style={styles.fitImage}
/>
</View>
</View>
</LinearGradient>
)}
<View
style={{ flex: 1, width: SCREEN_WIDTH * 0.7, alignContent: "center" }}
>
<View style={styles.pickerCareer}>
<Picker
selectedValue={this.state.guest}
style={{ width: "100%" }}
onValueChange={(itemValue, itemIndex) => {
this.setState({ guest: itemValue });
this.props.timerChangeGuest();
this.props.waitChangeGuest();
this.props.changeGuestList(
this.props.userDetails.token,
itemValue
);
// this.props.waitChangeGuest();
// this.props.getAvailableSessions(this.props.userDetails.token);
// this.props.waitChangeGuest();
// this.props.getSessionBlocks(this.props.sessions)
}}
>
<Picker.Item label="Escolhe o teu career path!" value="0" />
<Picker.Item label="Inteligência Artificial" value="9" />
<Picker.Item label="Redes e Segurança" value="10" />
<Picker.Item label="Data Science" value="15" />
<Picker.Item label="Desenvolvimento Web" value="14" />
<Picker.Item label="Internet das Coisas" value="12" />
<Picker.Item label="Desenvolvimento Mobile" value="11" />
</Picker>
</View>
<View style={{ width: SCREEN_WIDTH }}>
{!this.props.changingGuest && (
<FlatList
data={this.props.Blocks}
renderItem={({ item, index }) => (
<View style={styles.block}>
<View style={styles.time}>
<Text
style={{
margin: 10,
fontSize: 25,
color: "#CC1A17",
marginBottom: 0
}}
>
{moment(item[0].SessionStart).format("HH:mm")}
</Text>
<Text style={{ marginLeft: 20 }}>às</Text>
<Text
style={{
margin: 10,
fontSize: 25,
color: "#CC1A17",
marginTop: 5
}}
>
{moment(item[0].SessionEnd).format("HH:mm")}
</Text>
</View>
<View style={styles.sessions}>
<FlatList
data={item}
renderItem={({ data, index }) => (
<View>
<View style={styles.session}>
{this._verifySession(item[index].Id) && (
<TouchableOpacity
onPress={() => {}}
style={{ flex: 1, alignSelf: "center" }}
>
<View>
<IconFA
name="check-square"
color={"#CC1A17"}
size={35}
/>
</View>
</TouchableOpacity>
)}
{!this._verifySession(item[index].Id) && (
<TouchableOpacity
onPress={() => {
this.props.waitChangeGuest()
this.props.signSession(
this.props.userDetails.token,
item[index].Id
);
}}
style={{ flex: 1, alignSelf: "center" }}
>
<View>
<IconFA name="square" size={35} />
</View>
</TouchableOpacity>
)}
<TouchableOpacity
onPress={() =>
this.props.navigation.navigate("febrada")
}
>
<View style={styles.sessionInfo}>
<Text style={styles.sessionTitle}>
{item[index].Name}
</Text>
<Text
style={{ marginTop: 10, marginBottom: 5 }}
>
{item[index].MaxAttendees -
item[index].Enrolled}{" "}
Lugares disponíveis
</Text>
<Progress.Bar
color={"#000000"}
progress={
item[index].Enrolled /
item[index].MaxAttendees
}
unfilledColor={"white"}
width={170}
/>
</View>
</TouchableOpacity>
</View>
<Divider style={{ backgroundColor: "#eeeeee" }} />
</View>
)}
/>
</View>
</View>
)}
/>
)}
</View>
</View>
{(this.props.changingGuest || this.props.Blocks == true) && (
<ActivityIndicator
size="large"
color="red"
style={{ flex: 1, alignContent: "center" }}
/>
)}
</ScrollView>
</View>
);
}
} }
const styles = StyleSheet.create({ const styles = StyleSheet.create({
companyLogo:{ companyLogo: {
backgroundColor:'white', backgroundColor: "white",
margin:20, margin: 20,
width:SCREEN_WIDTH*0.35, width: SCREEN_WIDTH * 0.35,
borderRadius:3, borderRadius: 3,
padding:5 padding: 5
}, },
companyDescription:{ companyDescription: {
// backgroundColor:'white', // backgroundColor:'white',
margin:20, margin: 20,
marginRight:0, marginRight: 0,
width:SCREEN_WIDTH*0.5, width: SCREEN_WIDTH * 0.5,
borderRadius:3, borderRadius: 3
}, },
sessionInfo:{ sessionInfo: {
margin:5 margin: 5
}, },
sessionTitle:{ sessionTitle: {
fontSize:15, fontSize: 15,
fontWeight:'bold' fontWeight: "bold"
}, },
day:{ day: {
margin:10 margin: 10
}, },
dayText:{ dayText: {
fontSize:20, fontSize: 20,
color: '#CC1A17', color: "#CC1A17",
textAlign: 'center', textAlign: "center"
},
}, time: {
time:{ alignContent: "center",
alignContent:'center', width: SCREEN_WIDTH * 0.23,
width:SCREEN_WIDTH*0.23, backgroundColor: "white"
backgroundColor:'white'
},
block:{
flex:1,
flexDirection:'row',
backgroundColor:'red',
margin:10,
borderRadius:5
},
companyContainer:{
flex:1,
// backgroundColor:'blue',
flexDirection:'row',
marginTop:0
}, },
block: {
sessions:{ flex: 1,
flex:1, flexDirection: "row",
flexDirection:'column', backgroundColor: "red",
margin: 10,
backgroundColor:'white', borderRadius: 5
}, },
page:{ companyContainer: {
backgroundColor:'#eeeeee', flex: 1,
// backgroundColor:'blue',
},
pickerCareer:{
paddingLeft:30,
paddingRight:30,
backgroundColor:'white',
width:SCREEN_WIDTH,
flexDirection: "row",
marginTop: 0
}, },
session:{
margin:10, sessions: {
flex:1, flex: 1,
flexDirection:'row', flexDirection: "column",
backgroundColor: "white"
},
page: {
backgroundColor: "#eeeeee"
},
pickerCareer: {
paddingLeft: 30,
paddingRight: 30,
backgroundColor: "white",
width: SCREEN_WIDTH
},
session: {
margin: 10,
flex: 1,
flexDirection: "row"
} }
}); });
function mapStateToProps(state, props) { function mapStateToProps(state, props) {
return {
return { // token: state.apiReducer.token,
showAlert: state.apiReducer.showAlert,
// token: state.apiReducer.token, user: state.apiReducer.user,
user: state.apiReducer.user, logged: state.apiReducer.logged,
logged: state.apiReducer.logged, events: state.apiReducer.events,
events: state.apiReducer.events, userDetails: state.apiReducer.userDetails,
userDetails: state.apiReducer.userDetails, calendar: state.apiReducer.calendar,
calendar : state.apiReducer.calendar, changingGuest: state.apiReducer.changingGuest,
changingGuest : state.apiReducer.changingGuest, sessions: state.apiReducer.sessions,
sessions:state.apiReducer.sessions, Blocks: state.apiReducer.Blocks,
Blocks: state.apiReducer.Blocks, showAlert: state.apiReducer.showAlert
onHoldBlocks:state.apiReducer.onHoldBlocks, };
}
} }
function mapDispatchToProps(dispatch) { function mapDispatchToProps(dispatch) {
return bindActionCreators(Actions, dispatch);
return bindActionCreators(Actions, dispatch);
} }
export default connect(mapStateToProps, mapDispatchToProps)(choosePath); export default connect(
mapStateToProps,
mapDispatchToProps
)(choosePath);

View File

@ -32,4 +32,7 @@ export const UI_LOGIN_NOINTERNET='UI_LOGIN_NOINTERNET'
export const UI_LOGIN_OPEN_SCANNER='UI_LOIN_OPEN_SCANNER' export const UI_LOGIN_OPEN_SCANNER='UI_LOIN_OPEN_SCANNER'
//HOME
export const OPEN_MODAL='OPEN_MODAL'
export const CLOSE_MODAL='CLOSE_MODAL'

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,8 @@
export {checkUser, export {checkUser,
login,getEvents, login,
hold, getUserInfo, getEvents,
hold,
getUserInfo,
logoutUser, logoutUser,
getAvailableGuestlists, getAvailableGuestlists,
changeGuestList, changeGuestList,
@ -10,6 +12,9 @@ export {checkUser,
getSessionBlocks, getSessionBlocks,
timerChangeGuest, timerChangeGuest,
getSessions, getSessions,
signSession,
openModal,
closeModal
} from "./api" } from "./api"
export { export {

View File

@ -1,191 +1,211 @@
import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS, GET_CAREERS, CHANGE_GUEST, WAIT_CHANGE, GET_SESSIONS, SESSION_BLOCKS, TIMERWAIT_CHANGE } from "../actions/actionTypes" //Import the actions types constant we defined in our actions import {
import { REHYDRATE } from 'redux-persist'; DATA_AVAILABLE,
API_LOGIN,
CHECK_USER,
LOGOUT_USER,
USER_INFO,
HOLD,
GET_EVENTS,
GET_CAREERS,
CHANGE_GUEST,
WAIT_CHANGE,
GET_SESSIONS,
SESSION_BLOCKS,
TIMERWAIT_CHANGE,
SIGN_SESSION,
OPEN_MODAL,
CLOSE_MODAL
} from "../actions/actionTypes"; //Import the actions types constant we defined in our actions
import { REHYDRATE } from "redux-persist";
let apiState = {
isConnected: false,
logged: false,
onHold: true,
user: {},
events: [],
showAlert: true,
failedAttempt: false,
userDetails: {
username: "",
password: "",
token: {
expirationDateToken: 0,
access_token: ""
}
},
calendar: {},
changingGuest: false,
sessions: {},
Blocks: {},
onHoldBlocks: true,
careerPath: "SEM",
let apiState= { };
isConnected:false,
logged:false,
onHold:true,user:{},
events:[],
failedAttempt:false,
userDetails:{
username:'',
password:'',
token:{
expirationDateToken:0,
access_token:''
}
},
calendar:{
},
changingGuest:false,
sessions:{},
Blocks:{},
onHoldBlocks:true,
careerPath:'SEM'
}
const apiReducer = (state = apiState, action) => { const apiReducer = (state = apiState, action) => {
switch (action.type) {
switch(action.type){ case REHYDRATE:
console.log(action);
if (action.payload != undefined) {
console.log(action.payload);
case REHYDRATE: var expirationDateTokenA = 0;
console.log(action) var access_tokenA = "";
if(action.payload!=undefined){
console.log( action.payload)
var expirationDateTokenA=0; if (action.payload.apiReducer.userDetails.token != undefined) {
var access_tokenA=''; if (
action.payload.apiReducer.userDetails.token.expirationDateToken !=
undefined
) {
expirationDateTokenA =
action.payload.apiReducer.userDetails.token.expirationDateToken;
}
if(action.payload.apiReducer.userDetails.token!=undefined){ if (
action.payload.apiReducer.userDetails.token.access_token !=
if(action.payload.apiReducer.userDetails.token.expirationDateToken!= undefined){ undefined
) {
expirationDateTokenA= action.payload.apiReducer.userDetails.token.expirationDateToken; access_tokenA =
} action.payload.apiReducer.userDetails.token.access_token;
}
if((action.payload.apiReducer.userDetails.token.access_token!= undefined)){ }
access_tokenA= action.payload.apiReducer.userDetails.token.access_token; return {
sessions: action.payload.apiReducer.sessions,
// token: action.payload.apiReducer.token,
user: action.payload.apiReducer.user,
onHoldBlocks: true,
userDetails: {
token: {
expirationDateToken: expirationDateTokenA,
access_token: access_tokenA
},
username: action.payload.apiReducer.userDetails.username,
password: action.payload.apiReducer.userDetails.password
}
};
}
} case "CHANGE_CONNECTION_STATUS":
return Object.assign({}, state, {
} isConnected: action.isConnected
});
return {
// token: action.payload.apiReducer.token,
user: action.payload.apiReducer.user,
onHoldBlocks:true,
userDetails:{
token:{
expirationDateToken: expirationDateTokenA,
access_token:access_tokenA,
},
username:action.payload.apiReducer.userDetails.username,
password:action.payload.apiReducer.userDetails.password
}
};
}
case 'CHANGE_CONNECTION_STATUS': case HOLD:
return Object.assign({}, state, { state = Object.assign({}, state, { onHold: true });
isConnected: action.isConnected, return state;
});
case HOLD:
state=Object.assign({},state, { onHold:true }); case API_LOGIN:
return state; state = Object.assign({}, state, {
logged: action.logged,
//token:action.token,
failedAttempt: action.failedAttempt,
user: action.user,
userDetails: {
token: action.token,
username: action.userDetails.username,
password: action.userDetails.password
}
});
case API_LOGIN: return state;
state=Object.assign({},state, {
logged:action.logged,
//token:action.token,
failedAttempt: action.failedAttempt,
user:action.user,
userDetails: {token:action.token, username:action.userDetails.username, password:action.userDetails.password},
});
return state; case CHECK_USER:
var u = action.userDetails;
if (action.token != undefined) u.token = action.token;
case CHECK_USER: state = Object.assign({}, state, {
logged: action.logged,
onHold: action.onHold,
userDetails: u
});
var u= action.userDetails; return state;
if(action.token!=undefined)
u.token= action.token;
state=Object.assign({},state, {logged:action.logged, onHold:action.onHold, userDetails:u }); case LOGOUT_USER:
state = Object.assign({}, state, { logged: false });
return state; return state;
case LOGOUT_USER: case USER_INFO:
state = Object.assign({}, state, {
user: action.user,
loggedIn: action.loggedIn,
onHold: action.onHold
});
state=Object.assign({},state, { logged:false}); return state;
return state; case GET_EVENTS:
state = Object.assign({}, state, { events: action.events });
case USER_INFO: return state;
state=Object.assign({},state, { user: action.user , loggedIn:action.loggedIn, onHold:action.onHold}); case OPEN_MODAL:
console.log("open modal")
return state; state = Object.assign({}, state, {
modalOpen: true,
case GET_EVENTS: modalInfo: action.modalInfo,
modalType: action.type
});
return state;
state=Object.assign({},state, { events: action.events}); case CLOSE_MODAL:
state = Object.assign({}, state, {
return state; modalOpen: false,
modalInfo: "",
type: ""
});
return state;
case SESSION_BLOCKS:
state=Object.assign({},state, { Blocks: action.Blocks, onHoldBlocks:false, changingGuest:false});
return state;
case GET_CAREERS:
var c= {
guests:action.guests
}
state=Object.assign({},state, { calendar:c });
return state; case SIGN_SESSION:
state = Object.assign({}, state, {
case CHANGE_GUEST: Blocks: action.Blocks,
state=Object.assign({},state, { changingGuest:false, sessions:action.sessions, Blocks:action.Blocks}); changingGuest: false
return state; });
return state;
case WAIT_CHANGE: case SESSION_BLOCKS:
state=Object.assign({},state, { changingGuest:true}); state = Object.assign({}, state, {
return state; Blocks: action.Blocks,
onHoldBlocks: false,
changingGuest: false
});
return state;
case TIMERWAIT_CHANGE: case GET_CAREERS:
state=Object.assign({},state, { Blocks:true}); var c = {
return state; guests: action.guests
case GET_SESSIONS: };
state=Object.assign({},state, { sessions:action.sessions, Blocks: action.Blocks, careerPath:action.careerPath}); state = Object.assign({}, state, { calendar: c });
return state;
default: return state;
return state;
} case CHANGE_GUEST:
} state = Object.assign({}, state, {
export default apiReducer; changingGuest: false,
sessions: action.sessions,
Blocks: action.Blocks
});
return state;
case WAIT_CHANGE:
state = Object.assign({}, state, { changingGuest: true });
return state;
case TIMERWAIT_CHANGE:
state = Object.assign({}, state, { Blocks: true });
return state;
case GET_SESSIONS:
state = Object.assign({}, state, {
sessions: action.sessions,
Blocks: action.Blocks,
careerPath: action.careerPath
});
return state;
default:
return state;
}
};
export default apiReducer;

8
App/package-lock.json generated
View File

@ -7840,6 +7840,14 @@
"resolved": "https://registry.npmjs.org/react-native-app-intro-slider/-/react-native-app-intro-slider-1.0.1.tgz", "resolved": "https://registry.npmjs.org/react-native-app-intro-slider/-/react-native-app-intro-slider-1.0.1.tgz",
"integrity": "sha512-5Gzg5FG2uP/RHkSDFB5+2df4vQ2FpyUJ5PGYd23lLEISsEOJe0Zredh1hHMJj+fB5D9B7ZoL0IlR+SNn8iFxHg==" "integrity": "sha512-5Gzg5FG2uP/RHkSDFB5+2df4vQ2FpyUJ5PGYd23lLEISsEOJe0Zredh1hHMJj+fB5D9B7ZoL0IlR+SNn8iFxHg=="
}, },
"react-native-awesome-alerts": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/react-native-awesome-alerts/-/react-native-awesome-alerts-1.2.0.tgz",
"integrity": "sha512-ouxDGJ/porNkuaeqpgxIJA4jAPqHC9bJIsxLA21NA6eZhnEhbqWOprjsNqwI0/7bJxXm9baTzXESCMzwAy3eZw==",
"requires": {
"prop-types": "^15.5.10"
}
},
"react-native-branch": { "react-native-branch": {
"version": "2.2.5", "version": "2.2.5",
"resolved": "https://registry.npmjs.org/react-native-branch/-/react-native-branch-2.2.5.tgz", "resolved": "https://registry.npmjs.org/react-native-branch/-/react-native-branch-2.2.5.tgz",

View File

@ -18,6 +18,7 @@
"react-native": "0.57.8", "react-native": "0.57.8",
"react-native-action-button": "^2.8.5", "react-native-action-button": "^2.8.5",
"react-native-app-intro-slider": "^1.0.1", "react-native-app-intro-slider": "^1.0.1",
"react-native-awesome-alerts": "^1.2.0",
"react-native-camera": "^1.9.2", "react-native-camera": "^1.9.2",
"react-native-check-box": "^2.1.7", "react-native-check-box": "^2.1.7",
"react-native-cli": "^2.0.1", "react-native-cli": "^2.0.1",