final app

This commit is contained in:
Henrique Dias 2019-03-27 21:15:15 +00:00
parent 4af6c77536
commit 267080d993
32 changed files with 641 additions and 440 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -16,7 +16,7 @@ import {
TouchableOpacity,
TextInput,
NetInfo,
Animated
Animated, Linking,
} from "react-native";
import { bindActionCreators } from "redux";
@ -34,12 +34,12 @@ import Modal from "react-native-modal";
import Router from "./Router";
import Icon from "react-native-vector-icons/Ionicons";
import IconFA from "react-native-vector-icons/FontAwesome5"
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import Swiper from "react-native-swiper";
import resetPassword from "./screens/resetPassword";
//import resetPassword from "./screens/resetPassword";
var TimerMixin = require("react-timer-mixin");
function handleConnectivityChange() {
@ -48,7 +48,7 @@ function handleConnectivityChange() {
class App extends Component {
handleConnectivityChange = isConnected => {
this.setState({ isConnected });
@ -88,8 +88,8 @@ class App extends Component {
userDetails: { username: "", password: "" },
isConnected: true,
modalOpen: false,
modalResetPassword:false,
resetText:''
modalResetPassword: false,
resetText: ''
};
}
_print = () => {
@ -105,13 +105,13 @@ class App extends Component {
componentDidMount() {
//this.props.hold();
this.setState({ isModalVisible: false });
//verifica se o utilizador tem token guardado
this.props.checkUser(this.props.token);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener(
@ -119,14 +119,14 @@ class App extends Component {
this.handleConnectivityChange
);
}
_toggle=()=>{
this.setState({modalResetPassword:false})
_toggle = () => {
this.setState({ modalResetPassword: false })
}
//faz call
_reset=()=>{
_reset = () => {
//fecha modal
this.props.resetPassword(this.props.token,this.state.resetText),
this.setState({modalResetPassword:false})
this.props.resetPassword(this.props.token, this.state.resetText),
this.setState({ modalResetPassword: false })
//faz call
}
@ -148,8 +148,8 @@ class App extends Component {
};
render() {
if (!this.props.logged && this.props.onHold) {
@ -167,69 +167,69 @@ class App extends Component {
return <Router />;
}
return (
<View style={styles.slide2}>
<Modal
isVisible={this.props.UI_loginScannerActive}
onBackdropPress={this._toggle}
onBackButtonPress={this._toggle}
animationInTiming={1100}
animationOutTiming={1100}
style={{marginTop:-20}}
>
<QRCodeScanner
onRead={this.onSuccess}
cameraStyle={styles.cameraContainer}
showMarker={true}
/>
<Button
onPress={this.props.closeLoginQRScan}
title={"Fechar Scan"}
color={"#CC1A17"}
></Button>
<Text style={{textAlign:'center', fontSize:12, margin:10,marginBottom:5, color:'white'}}>
Sim, o quadrado não está centrado. Era para testar a tua atenção!
isVisible={this.props.UI_loginScannerActive}
onBackdropPress={this._toggle}
onBackButtonPress={this._toggle}
animationInTiming={1100}
animationOutTiming={1100}
style={{ marginTop: -20 }}
>
<QRCodeScanner
onRead={this.onSuccess}
cameraStyle={styles.cameraContainer}
showMarker={true}
/>
<Button
onPress={this.props.closeLoginQRScan}
title={"Fechar Scan"}
color={"#CC1A17"}
></Button>
<Text style={{ textAlign: 'center', fontSize: 12, margin: 10, marginBottom: 5, color: 'white' }}>
Sim, o quadrado não está centrado. Era para testar a tua atenção!
</Text>
</Modal>
</Modal>
<Modal
isVisible={this.state.modalResetPassword}
onBackdropPress={this._toggle}
onBackButtonPress={this._toggle}
animationInTiming={1100}
animationOutTiming={1100}
>
<View style={{ backgroundColor: "white" , padding:20,paddingBottom:0, alignItems:'center'}}>
<View>
<Text style={{textAlign:'center',fontSize:23, fontWeight:'bold', color:'#CC1A17', margin:30}}>Reset Password</Text>
<Text style={{textAlign:'center', }}>Deves introduzir o email com o qual efectuaste a compra do bilhete.</Text>
<TextInput
style={styles.resetPassword}
onFocus={this._print}
maxLength={50}
blurOnSubmit={true}
onChangeText={r => this.setState({ resetText:r })}
clearButtonMode="always"
value={this.state.resetText}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
placeholder="Email ou Qr code"
/>
<Button
onPress={this._reset}
title={"Enviar"}
color={"#CC1A17"}
></Button>
<Text style={{textAlign:'center', fontSize:12, margin:10,marginBottom:5}}> Caso tenhas problemas com este processo deves contactar a comissão organizadora atravês do email geral.</Text>
>
<View style={{ backgroundColor: "white", padding: 20, paddingBottom: 0, alignItems: 'center' }}>
<View>
<Text style={{ textAlign: 'center', fontSize: 23, fontWeight: 'bold', color: '#CC1A17', margin: 30 }}>Reset Password</Text>
<Text style={{ textAlign: 'center', }}>Deves introduzir o email com o qual efectuaste a compra do bilhete.</Text>
<TextInput
style={styles.resetPassword}
onFocus={this._print}
maxLength={50}
blurOnSubmit={true}
onChangeText={r => this.setState({ resetText: r })}
clearButtonMode="always"
value={this.state.resetText}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
placeholder="Email ou Qr code"
/>
<Button
onPress={this._reset}
title={"Enviar"}
color={"#CC1A17"}
></Button>
<Text style={{ textAlign: 'center', fontSize: 12, margin: 10, marginBottom: 5 }}> Caso tenhas problemas com este processo deves contactar a comissão organizadora atravês do email geral.</Text>
</View>
</View>
</Modal>
@ -239,7 +239,7 @@ class App extends Component {
justifyContent: "center",
alignItems: "center",
margin:20
margin: 20
}}
>
<Image
@ -247,83 +247,107 @@ class App extends Component {
source={require("./assets/img/logo2.png")}
/>
</View>
{!this.props.loadingLogin &&
<View styles={styles.loginContainer}>
<View style={styles.inputSection}>
{!this.props.loadingLogin &&
<View styles={styles.loginContainer}>
<View style={styles.inputSection}>
<TextInput
style={styles.input}
placeholder={this.state.username}
onChangeText={searchString => {
this.setState({ username: searchString });
}}
maxLength={15}
underlineColorAndroid="transparent"
/>
<TouchableOpacity onPress={this._scanQr}>
<View style={styles.scanQR}>
<Icon
style={styles.searchIcon}
name="ios-qr-scanner"
size={40}
color="#000"
/>
</View>
</TouchableOpacity>
</View>
<TextInput
style={styles.input}
placeholder={this.state.username}
onChangeText={searchString => {
this.setState({ username:searchString });
}}
maxLength={15}
underlineColorAndroid="transparent"
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"
/>
<TouchableOpacity onPress={this._scanQr}>
<View style={styles.scanQR}>
<Icon
style={styles.searchIcon}
name="ios-qr-scanner"
size={40}
color="#000"
/>
{!this.props.loadingLogin &&
<View style={{ alignItems: 'center', margin: 20 }}>
<TouchableOpacity onPress={this._tryLogin} style={{ backgroundColor: '#CC1A17', borderRadius: 3 }}>
<Text style={{ color: 'white', fontSize: 20, margin: 10, width: 150, textAlign: 'center', }}>Login</Text>
</TouchableOpacity>
</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"
/>
{ !this.props.loadingLogin &&
<View style={{alignItems:'center', margin:20}}>
<TouchableOpacity onPress={this._tryLogin} style={{backgroundColor:'#CC1A17',borderRadius:3}}>
<Text style={{color:'white', fontSize:20, margin:10, width:150,textAlign:'center',}}>Login</Text>
</TouchableOpacity>
</View>
}
</View>
}{
this.props.loadingLogin &&
<View style={{margin:100}}>
<ActivityIndicator size="large" color="#CC1A17" />
</View>
}
</View>
}{
this.props.loadingLogin &&
<View style={{ margin: 100 }}>
<ActivityIndicator size="large" color="#CC1A17" />
</View>
}
<View style={styles.buttons}>
<TouchableOpacity style={styles.button}>
<TouchableOpacity style={styles.button} onPress={() => {
Linking.canOpenURL("https://www.facebook.com/ENEIConf/").then(supported => {
if (supported) {
Linking.openURL("https://www.facebook.com/ENEIConf/");
} else {
}
});
}}>
<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 onPress={() => {this.setState({modalResetPassword:true})}}>
<RkText style={{ color: "#CC1A17", fontWeight:'bold' }} kType="header6">
Reset Password
<TouchableOpacity style={styles.button} onPress={() => {
Linking.canOpenURL("https://www.instagram.com/eneiconf/").then(supported => {
if (supported) {
Linking.openURL("https://www.instagram.com/eneiconf/");
} else {
}
});
}}>
<Icon name="logo-instagram" size={40} />
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={() => {
Linking.canOpenURL("https://enei.pt").then(supported => {
if (supported) {
Linking.openURL("https://enei.pt");
} else {
}
});
}}>
<IconFA name="globe" size={35}/>
</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 onPress={() => { this.setState({ modalResetPassword: true }) }}>
<RkText style={{ color: "#CC1A17", fontWeight: 'bold' }} kType="header6">
Reset Password
</RkText>
</TouchableOpacity>
</RkButton>
</View>
</TouchableOpacity>
</RkButton>
</View>
</View>
</View >
);
}
}
@ -344,15 +368,15 @@ const overlayColor = "rgba(0,0,0,0.30)";
const styles = {
cameraContainer: {
height: Dimensions.get('window').height ,
height: Dimensions.get('window').height,
},
resetPassword:{
resetPassword: {
borderColor: "#bfbdbd",
borderWidth: 1,
margin:20,
margin: 20,
marginTop: 60,
marginBottom: 60,
@ -367,7 +391,7 @@ const styles = {
paddingLeft: SCREEN_WIDTH * 0.05
},
passwordInput: {
borderColor: "#bfbdbd",
borderWidth: 1,
@ -389,19 +413,19 @@ const styles = {
},
scanQR: {
//flexDirection: 'row',
flex:1,
//paddingTop: 5,
flex: 1,
//paddingTop: 5,
backgroundColor: 10,
alignItems:'center',
padding:5,
paddingRight:15,
alignItems: 'center',
padding: 5,
paddingRight: 15,
//width: 80,
// paddingLeft: 10,
// paddingLeft: 10,
backgroundColor: "#CC1A17",
borderBottomRightRadius: 3,
borderTopRightRadius: 3,
// height: "100%"
// height: "100%"
},
inputSection: {
flexDirection: "row",
@ -578,7 +602,7 @@ mapStateToProps = (state, props) => {
modalOpen: state.apiReducer.modalOpen,
modalInfo: state.apiReducer.modalInfo,
type: state.apiReducer.type,
loadingLogin:state.apiReducer.loadingLogin
loadingLogin: state.apiReducer.loadingLogin
};
};

View File

@ -37,7 +37,7 @@ import editCalendar from './screens/editCalendar';
import choosePath from './screens/choosePath';
import calendarDetail from './screens/calendarDetail';
import resetPassword from './screens/resetPassword';
//import resetPassword from './screens/resetPassword';
import eventDetail from './screens/eventDetail';
@ -227,9 +227,7 @@ const Stack = createStackNavigator({
screen: teamDetail,
},
resetPassword:{
screen:resetPassword
},
event:{
screen: event
}

View File

@ -53,7 +53,6 @@ class eventDetail extends React.Component {
header: (
<NavAbsolute
navigation={navigation}
// title={navigation.state.params.info.name}
/>
)
});

View File

@ -1,29 +0,0 @@
import React, {Component} from 'react';
import {
ActivityIndicator,
AsyncStorage,
Button,
StatusBar,
StyleSheet,
View,
} from 'react-native';
import {UtilStyles} from '../assets/styles'
export default class resetPassword extends Component {
constructor() {
super();
this._bootstrapAsync();
}
// Render Loading
render() {
return (
<View style={UtilStyles.containerLoading}>
<Text>Reset Password</Text>
</View>
);
}
}

View File

@ -89,10 +89,12 @@ class teamDetail extends React.Component {
margin: 10,
padding: 10,
borderRadius: 3,
fontSize: 15
fontSize: 15,
}}
onChangeText={n => this.setState({ nome: n })}
value={this.state.nome}
maxLength = {30}
/>
</View>
@ -104,6 +106,14 @@ class teamDetail extends React.Component {
alignContent: "center",
alignItems: "center"
}}
onPress={()=>{
this.props.changeTeamName(this.props.internalToken, {
TeamID:this.props.team.id,
nome:this.state.nome,
UserQR:this.props.user.Code,
})
}}
>
<Text>Guardar</Text>
<IconFA name="user-edit" size={22} />
@ -153,7 +163,6 @@ class teamDetail extends React.Component {
style={{ width: 50, height: 50 }}
source={require("../assets/logo_black.jpg")}
/>
</View>
)}
/>

View File

@ -34,6 +34,7 @@ import {
LOGIN_INTERNAL,
CHANGE_PASSWORD
} from "./actionTypes"; //Import the actions types constant we defined in our actions
var validator = require("email-validator");
import moment from "moment";
@ -59,7 +60,7 @@ export function scanQrCode(data, tokenInternal) {
axios
.post("/api/Scan", data)
.then(a => {
Alert.alert("SUCESSO!", "Cromo adicionado com sucesso!");
dispatch({
type: SCAN_QR
@ -72,13 +73,50 @@ export function scanQrCode(data, tokenInternal) {
};
}
export function changeTeamName(){
export function changeTeamName(tokenInternal, team) {
axios.defaults.headers.common = {
Authorization: `bearer ${tokenInternal}`
};
axios.defaults.baseURL = "https://api.enei.pt/api";
return dispatch => {
axios.post('/Teams/changename', team).then(p => {
console.log(p);
Alert.alert("Sucesso!!", "Nome alterado com sucesso");
axios.defaults.baseURL = "https://api.enei.pt/api";
axios.defaults.headers.common = {
Authorization: `bearer ${tokenInternal}`
};
console.log("Token: ")
console.log(tokenInternal)
axios
.get(`/Teams/u/${team.UserQR}`)
.then(a => {
console.log("sucesso!");
console.log(a);
console.log("cenas aqui")
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
});
dispatch({
type: OPEN_MODAL
});
})
.catch(err => {
Alert.alert("ERRO!", "Ocorreu um erro a alterar o nome da equipa")
})
}
}
export function getEventLocsVisited(teamId, tokenInternal) {
axios.defaults.headers.common = {
@ -91,7 +129,7 @@ export function getEventLocsVisited(teamId, tokenInternal) {
axios
.get(`/EventLocsVisited/t/${teamId}`)
.then(a => {
dispatch({
type: GET_LOCS_VISITED,
locais: a.data
@ -99,7 +137,7 @@ export function getEventLocsVisited(teamId, tokenInternal) {
})
.catch(p => {
console.log(p);
// Alert.alert("ERRO!", "erro a obter os locais visitados");
// Alert.alert("ERRO!", "erro a obter os locais visitados");
});
};
}
@ -144,26 +182,26 @@ export function deleteTeam(data, tokenInternal) {
console.log(a.data);
Alert.alert("SUCESSO!", "A equipa foi removida com sucesso");
axios
.get(`/api/Teams/u/${data.UserQr}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
.get(`/api/Teams/u/${data.UserQr}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
dispatch({
type: OPEN_MODAL
});
dispatch({
type: OPEN_MODAL
});
dispatch({
type: DELETE_TEAM
});
@ -175,7 +213,7 @@ export function deleteTeam(data, tokenInternal) {
};
}
export function createTeam(team, tokenInternal,user) {
export function createTeam(team, tokenInternal, user) {
axios.defaults.baseURL = "https://api.enei.pt";
axios.defaults.headers.common = {
Authorization: `bearer ${tokenInternal}`
@ -188,26 +226,26 @@ export function createTeam(team, tokenInternal,user) {
console.log(a.data);
Alert.alert("SUCESSO!", "A equipa foi criada com sucesso");
axios
.get(`/api/Teams/u/${user.Code}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
.get(`/api/Teams/u/${user.Code}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
dispatch({
type: OPEN_MODAL
});
dispatch({
type: OPEN_MODAL
});
dispatch({
type: CREATE_TEAM
});
@ -262,24 +300,24 @@ export function removeUserTeam(data, tokenInternal) {
console.log(a.data);
Alert.alert("Sucesso!", "Elemento removido com sucesso!!");
axios
.get(`/api/Teams/u/${data.UserQR}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
.get(`/api/Teams/u/${data.UserQR}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
team: "none"
});
});
}
})
.catch(p => {
@ -293,7 +331,7 @@ export function removeUserTeam(data, tokenInternal) {
};
}
export function addUserTeam(data, tokenInternal,user) {
export function addUserTeam(data, tokenInternal, user) {
axios.defaults.headers.common = {
Authorization: `bearer ${tokenInternal}`
};
@ -306,25 +344,25 @@ export function addUserTeam(data, tokenInternal,user) {
console.log("sucesso!");
console.log(a.data);
Alert.alert("Sucesso!", "Elemento adicionado com sucesso!!");
}
axios
.get(`/api/Teams/u/${user.Code}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
//team: "none"
});
});
.get(`/api/Teams/u/${user.Code}`)
.then(a => {
console.log("sucesso!");
console.log(a);
dispatch({
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
dispatch({
type: GET_TEAM,
//team: "none"
});
});
})
.catch(p => {
console.log(p);
@ -335,7 +373,7 @@ export function addUserTeam(data, tokenInternal,user) {
type: OPEN_MODAL
});
};
}
export function getUserTeam(user, tokenInternal) {
@ -354,7 +392,7 @@ export function getUserTeam(user, tokenInternal) {
type: GET_TEAM,
team: a.data
});
})
.catch(p => {
console.log(p);
@ -378,8 +416,8 @@ export function waitLogin() {
};
}
var getEAsync = function(user, careerPath, token) {
return new Promise(function(resolve, reject) {
var getEAsync = function (user, careerPath, token) {
return new Promise(function (resolve, reject) {
console.log("career path: ");
var cenas = [];
let events = [];
@ -397,7 +435,7 @@ var getEAsync = function(user, careerPath, token) {
};
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
// handle success
console.log("available");
console.log(response);
@ -535,16 +573,16 @@ var getEAsync = function(user, careerPath, token) {
day: result["15"][key].day
});
}
a = _.sortBy(a, function(o) {
a = _.sortBy(a, function (o) {
return o.time;
});
b = _.sortBy(b, function(o) {
b = _.sortBy(b, function (o) {
return o.time;
});
c = _.sortBy(c, function(o) {
c = _.sortBy(c, function (o) {
return o.time;
});
d = _.sortBy(d, function(o) {
d = _.sortBy(d, function (o) {
return o.time;
});
@ -563,7 +601,7 @@ var getEAsync = function(user, careerPath, token) {
al: alojamento
};
})
.catch(function(error) {
.catch(function (error) {
alert("Error a obter sessões disponíveis!!");
console.log(error);
});
@ -574,8 +612,8 @@ var getEAsync = function(user, careerPath, token) {
});
};
var checkAndRefresh = function(token) {
return new Promise(function(resolve, reject) {
var checkAndRefresh = function (token) {
return new Promise(function (resolve, reject) {
//verificar se já expirou a validade do token
if (token == undefined || token.access_token == undefined) {
reject("user logged out");
@ -632,7 +670,7 @@ var checkAndRefresh = function(token) {
access_token: parsed.access_token,
refresh_token: parsed.refresh_token,
expirationDateToken:
Math.round(new Date().getTime() / 1000) + (parsed.expires_in -2)
Math.round(new Date().getTime() / 1000) + (parsed.expires_in - 2)
};
console.log(parsed);
@ -642,12 +680,12 @@ var checkAndRefresh = function(token) {
} else {
console.log(
"Tempo restante token: " +
Math.round(
(token.expirationDateToken -
Math.round(new Date().getTime() / 1000)) /
60
) +
" Minutos"
Math.round(
(token.expirationDateToken -
Math.round(new Date().getTime() / 1000)) /
60
) +
" Minutos"
);
resolve(token);
}
@ -901,7 +939,7 @@ export function removeSession(user, token, idSession) {
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
console.log(response);
var sessions = response.data;
@ -940,7 +978,7 @@ export function removeSession(user, token, idSession) {
getEvents(user, careerPath, token);
});
})
.catch(function(error) {
.catch(function (error) {
alert("Erro a obter sessões disponíveis!!");
console.log(error);
@ -994,7 +1032,7 @@ export function signSession(user, token, idSession) {
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
console.log(response);
var sessions = response.data;
@ -1039,7 +1077,7 @@ export function signSession(user, token, idSession) {
});
});
})
.catch(function(error) {
.catch(function (error) {
console.log(error);
});
} else {
@ -1079,7 +1117,7 @@ export function getSessions(token) {
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
var sessions = response.data;
var careerPath = getCareerPath(sessions);
@ -1106,7 +1144,7 @@ export function getSessions(token) {
//guests: response.data
});
})
.catch(function(error) {
.catch(function (error) {
alert("Error a obter sessões disponíveis!!");
console.log(error);
});
@ -1130,7 +1168,7 @@ export function getAvailableGuestlists(token) {
};
axios
.get("/Attendee/AvailableGuestlists")
.then(function(response) {
.then(function (response) {
// handle success
console.log(response);
dispatch({
@ -1139,11 +1177,11 @@ export function getAvailableGuestlists(token) {
token: newToken
});
})
.catch(function(error) {
.catch(function (error) {
// handle error
console.log(error);
})
.then(function() {
.then(function () {
// always executed
});
})
@ -1167,7 +1205,7 @@ export function getAvailableGuestlists(token) {
*/
export function changeGuestList(token, guestID) {
axios.defaults.baseURL = "https://tickets.enei.pt/internal/api";
console.log("Guest ID: "+ guestID)
console.log("Guest ID: " + guestID)
return dispatch => {
checkAndRefresh(token)
.then(newToken => {
@ -1179,15 +1217,15 @@ export function changeGuestList(token, guestID) {
axios
.get(full)
.then(function(response) {
.then(function (response) {
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
// handle success
//console.log(response);
console.log("SUcesso a trocar para :"+ guestID)
console.log("SUcesso a trocar para :" + guestID)
var cenas = [];
c = getCareerPath(response.data);
const result = flow(
@ -1213,18 +1251,18 @@ export function changeGuestList(token, guestID) {
//guests: response.data
});
})
.catch(function(error) {
.catch(function (error) {
alert("Error a obter sessões disponíveis!!");
console.log(error);
});
})
.catch(function(error) {
.catch(function (error) {
// handle error
console.log(response);
console.log(error);
alert("Erro a mudar de career path");
})
.then(function() {
.then(function () {
// always executed
});
})
@ -1267,7 +1305,7 @@ export function getAvailableSessions(token) {
};
axios
.get("/Attendee/AvailableSessions")
.then(function(response) {
.then(function (response) {
// handle success
console.log(response);
@ -1286,7 +1324,7 @@ export function getAvailableSessions(token) {
token: newToken
});
})
.catch(function(error) {
.catch(function (error) {
alert("Error a obter sessões disponíveis!!");
console.log(error);
});
@ -1375,7 +1413,7 @@ function getE(user, careerPath, token) {
d = [];
//MEU DEUS QUE É ISTO???
if (careerPath != undefined && careerPath.code =="IA" || careerPath.code=="WEB") {
if (careerPath != undefined && careerPath.code == "IA" || careerPath.code == "WEB") {
b.push({
Id: 22,
time: "13:30",
@ -1425,7 +1463,7 @@ function getE(user, careerPath, token) {
place: "Cantina do ISEC"
});
}
if (careerPath != undefined && careerPath.code =="IOT" || careerPath.code =="NET") {
if (careerPath != undefined && careerPath.code == "IOT" || careerPath.code == "NET") {
b.push({
Id: 22,
time: "12:15",
@ -1475,7 +1513,7 @@ function getE(user, careerPath, token) {
place: "Cantina do ISEC"
});
}
if (careerPath != undefined && careerPath.code =="DS" || careerPath.code=="MOB") {
if (careerPath != undefined && careerPath.code == "DS" || careerPath.code == "MOB") {
b.push({
Id: 22,
time: "12:45",
@ -1525,7 +1563,7 @@ function getE(user, careerPath, token) {
place: "Cantina do ISEC"
});
}
a.push({
Id: 48,
time: "21:00",
@ -1554,7 +1592,7 @@ function getE(user, careerPath, token) {
description:
"A sessão de abertura vai-se realizar no nosso auditório principal. Poderás ver a apresentação das várias atividades que irão decorrer no evento.",
name: "Sessão de Abertura",
Enrolled: 700,
MaxAttendees: 300,
day: "12",
@ -1615,7 +1653,7 @@ function getE(user, careerPath, token) {
Enrolled: result["12"][key].Enrolled,
MaxAttendees: result["12"][key].MaxAttendees,
day: result["12"][key].day,
place:""
place: ""
});
}
@ -1630,7 +1668,7 @@ function getE(user, careerPath, token) {
Enrolled: result["13"][key].Enrolled,
MaxAttendees: result["13"][key].MaxAttendees,
day: result["13"][key].day,
place:""
place: ""
});
}
for (let key in result["14"]) {
@ -1644,7 +1682,7 @@ function getE(user, careerPath, token) {
Enrolled: result["14"][key].Enrolled,
MaxAttendees: result["14"][key].MaxAttendees,
day: result["14"][key].day,
place:""
place: ""
});
}
@ -1662,16 +1700,16 @@ function getE(user, careerPath, token) {
place: ""
});
}
a = _.sortBy(a, function(o) {
a = _.sortBy(a, function (o) {
return o.time;
});
b = _.sortBy(b, function(o) {
b = _.sortBy(b, function (o) {
return o.time;
});
c = _.sortBy(c, function(o) {
c = _.sortBy(c, function (o) {
return o.time;
});
d = _.sortBy(d, function(o) {
d = _.sortBy(d, function (o) {
return o.time;
});
@ -1705,6 +1743,36 @@ export function getEvents(user, careerPath, token) {
};
}
export function resetPassword(token, password) {
var type = 0;
axios.defaults.baseURL = "https://tickets.enei.pt/internal/api";
if (validator.validate(password)) {
type = 0 //
} else {
type = 1;
}
var type;
return dispatch => {
axios
.get(`/User/RecoverPassword?input=${password}+&type=${type}`)
.then(function (response) {
Alert.alert("Sucesso!", "Foi enviado um email com o pedido de recuperação.");
})
.catch(() => {
Alert.alert("Error!!", "Ocorreu um erro.")
})
}
}
export function login(user, pass) {
return dispatch => {
console.log("user: " + user + " password: " + pass);
@ -1779,7 +1847,7 @@ export function login(user, pass) {
console.log(parsed)
var obj = {
access_token: parsed.access_token,
expirationDateToken: Math.round(new Date().getTime() / 1000) + (parsed.expires_in-2),
expirationDateToken: Math.round(new Date().getTime() / 1000) + (parsed.expires_in - 2),
refresh_token: parsed.refresh_token,
valid: true
};
@ -1824,7 +1892,7 @@ export function getUserInfo(token) {
};
fetch("https://tickets.enei.pt/internal/api/Attendee/Detail", obj)
.then(function(res) {
.then(function (res) {
let obj = JSON.parse(res._bodyText);
console.log(obj);
axios.defaults.baseURL = "https://api.enei.pt";
@ -1844,7 +1912,7 @@ export function getUserInfo(token) {
Authorization: `bearer ${a.data.token}`
};
axios.defaults.baseURL = "https://api.enei.pt";
axios.defaults.baseURL = "https://api.enei.pt";
axios.get(`/api/Teams/u/${obj.Code}`).then(v => {
@ -1855,26 +1923,26 @@ export function getUserInfo(token) {
Authorization: `bearer ${a.data.token}`
};
axios.defaults.baseURL = "https://api.enei.pt";
axios
.get(`api/EventLocsVisited/t/${v.data.id}`)
.then(c => {
.get(`api / EventLocsVisited / t / ${v.data.id}`)
.then(c => {
console.log("sucesso!");
console.log("sucesso!");
console.log(c);
dispatch({
type: GET_LOCS_VISITED,
locais: c.data
console.log(c);
dispatch({
type: GET_LOCS_VISITED,
locais: c.data
});
})
.catch(p => {
console.log(p);
// Alert.alert("ERRO!", "erro a obter os locais visitados");
});
})
.catch(p => {
console.log(p);
// Alert.alert("ERRO!", "erro a obter os locais visitados");
});
dispatch({
type: GET_TEAM,
team: v.data
@ -1917,7 +1985,7 @@ export function getUserInfo(token) {
token: newToken
});
})
.catch(function(res) {
.catch(function (res) {
console.log("erro");
// dispatch({ type: USER_INFO,onHold:false});
alert("Erro a obter a informação pessoal.");

View File

@ -29,7 +29,8 @@ export {checkUser,
deleteTeam,
getCromos,
getEventLocsVisited,
scanQrCode
scanQrCode,
changeTeamName
} from "./api"

0
App/ios/app-tvOS/Info.plist Normal file → Executable file
View File

0
App/ios/app-tvOSTests/Info.plist Normal file → Executable file
View File

101
App/ios/app.xcodeproj/project.pbxproj Normal file → Executable file
View File

@ -5,6 +5,7 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
@ -35,10 +36,12 @@
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
2DCD954D1E0B4F2C00145EB5 /* appTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* appTests.m */; };
2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
36323C84F40A4AD98ED24867 /* libRNNetworkInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F17AA23BABD64924A34416D0 /* libRNNetworkInfo.a */; };
4EBB88037B054A508BF35245 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F42241E0235464C91B24049 /* libRNDeviceInfo.a */; };
514DB1DF2E3B452F9EF272E3 /* libRNVectorIcons-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 95B0A42B6CD8441E904E6EB9 /* libRNVectorIcons-tvOS.a */; };
69E1B84AE0DF486CB1B1D226 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C00CE8A4E3B747F9816B91CF /* libBVLinearGradient.a */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
95BB560D0FBE4259815182B3 /* libimageCropPicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DFE0E611CE9446B8B39E61E /* libimageCropPicker.a */; };
A52E07192CD249F7B10FDA66 /* libAirMaps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C0906CC582484A7393F9B1F6 /* libAirMaps.a */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
BE104176D74E47E9A369B15A /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EB0A5A258CBE4EEFAD3C358E /* libRNVectorIcons.a */; };
@ -60,10 +63,8 @@
BE5EAB86221B7D5400E92E5B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB77221B7D5400E92E5B /* Zocial.ttf */; };
BE5EAC3A221B83CF00E92E5B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE302B75221B7C3B005626CF /* Ionicons.ttf */; };
BE5EAC41221B889900E92E5B /* libReactNativePermissions.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE5EAC40221B888C00E92E5B /* libReactNativePermissions.a */; };
E677346A94D54E90817979B0 /* libRNDeviceInfo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */; };
95BB560D0FBE4259815182B3 /* libimageCropPicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DFE0E611CE9446B8B39E61E /* libimageCropPicker.a */; };
C4424512325C419A8C59B9B1 /* libRNImagePicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 75426ED753E94FDF955E27D9 /* libRNImagePicker.a */; };
36323C84F40A4AD98ED24867 /* libRNNetworkInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F17AA23BABD64924A34416D0 /* libRNNetworkInfo.a */; };
E677346A94D54E90817979B0 /* libRNDeviceInfo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -340,6 +341,27 @@
remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
remoteInfo = RCTBlob;
};
B531CE5B224BE135002E8E5F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 560B0A0D61754DCFA99F6FFB /* imageCropPicker.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3400A8081CEB54A6008A0BC7;
remoteInfo = imageCropPicker;
};
B531CE5E224BE135002E8E5F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = ED5C7473CD764393A9F1944C /* RNImagePicker.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 014A3B5C1C6CF33500B6D375;
remoteInfo = RNImagePicker;
};
B531CE61224BE135002E8E5F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 293AF9FDDC2442BDBF3C2FE0 /* RNNetworkInfo.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 045BEB3C1B52EA6A0013C1B9;
remoteInfo = RNNetworkInfo;
};
BE302B6B221B7860005626CF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE302B67221B7860005626CF /* RNCamera.xcodeproj */;
@ -434,13 +456,17 @@
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = app/main.m; sourceTree = "<group>"; };
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = BVLinearGradient.xcodeproj; path = "../node_modules/react-native-linear-gradient/BVLinearGradient.xcodeproj"; sourceTree = "<group>"; };
293AF9FDDC2442BDBF3C2FE0 /* RNNetworkInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNNetworkInfo.xcodeproj; path = "../node_modules/react-native-network-info/ios/RNNetworkInfo.xcodeproj"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* app-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "app-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* app-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "app-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNDeviceInfo-tvOS.a"; sourceTree = "<group>"; };
560B0A0D61754DCFA99F6FFB /* imageCropPicker.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = imageCropPicker.xcodeproj; path = "../node_modules/react-native-image-crop-picker/ios/imageCropPicker.xcodeproj"; sourceTree = "<group>"; };
5BA133418E6F4967BC5BC234 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = "<group>"; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
6DFE0E611CE9446B8B39E61E /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = "<group>"; };
75426ED753E94FDF955E27D9 /* libRNImagePicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNImagePicker.a; sourceTree = "<group>"; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
95B0A42B6CD8441E904E6EB9 /* libRNVectorIcons-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNVectorIcons-tvOS.a"; sourceTree = "<group>"; };
@ -467,12 +493,8 @@
C00CE8A4E3B747F9816B91CF /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = "<group>"; };
C0906CC582484A7393F9B1F6 /* libAirMaps.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libAirMaps.a; sourceTree = "<group>"; };
EB0A5A258CBE4EEFAD3C358E /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
560B0A0D61754DCFA99F6FFB /* imageCropPicker.xcodeproj */ = {isa = PBXFileReference; name = "imageCropPicker.xcodeproj"; path = "../node_modules/react-native-image-crop-picker/ios/imageCropPicker.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
6DFE0E611CE9446B8B39E61E /* libimageCropPicker.a */ = {isa = PBXFileReference; name = "libimageCropPicker.a"; path = "libimageCropPicker.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
ED5C7473CD764393A9F1944C /* RNImagePicker.xcodeproj */ = {isa = PBXFileReference; name = "RNImagePicker.xcodeproj"; path = "../node_modules/react-native-image-picker-m/ios/RNImagePicker.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
75426ED753E94FDF955E27D9 /* libRNImagePicker.a */ = {isa = PBXFileReference; name = "libRNImagePicker.a"; path = "libRNImagePicker.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
293AF9FDDC2442BDBF3C2FE0 /* RNNetworkInfo.xcodeproj */ = {isa = PBXFileReference; name = "RNNetworkInfo.xcodeproj"; path = "../node_modules/react-native-network-info/ios/RNNetworkInfo.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
F17AA23BABD64924A34416D0 /* libRNNetworkInfo.a */ = {isa = PBXFileReference; name = "libRNNetworkInfo.a"; path = "libRNNetworkInfo.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
ED5C7473CD764393A9F1944C /* RNImagePicker.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNImagePicker.xcodeproj; path = "../node_modules/react-native-image-picker-m/ios/RNImagePicker.xcodeproj"; sourceTree = "<group>"; };
F17AA23BABD64924A34416D0 /* libRNNetworkInfo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNNetworkInfo.a; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -757,6 +779,30 @@
name = Products;
sourceTree = "<group>";
};
B531CE54224BE134002E8E5F /* Products */ = {
isa = PBXGroup;
children = (
B531CE5C224BE135002E8E5F /* libimageCropPicker.a */,
);
name = Products;
sourceTree = "<group>";
};
B531CE56224BE134002E8E5F /* Products */ = {
isa = PBXGroup;
children = (
B531CE62224BE135002E8E5F /* libRNNetworkInfo.a */,
);
name = Products;
sourceTree = "<group>";
};
B531CE58224BE134002E8E5F /* Products */ = {
isa = PBXGroup;
children = (
B531CE5F224BE135002E8E5F /* libRNImagePicker.a */,
);
name = Products;
sourceTree = "<group>";
};
BE302B68221B7860005626CF /* Products */ = {
isa = PBXGroup;
children = (
@ -804,6 +850,9 @@
0F42241E0235464C91B24049 /* libRNDeviceInfo.a */,
C0906CC582484A7393F9B1F6 /* libAirMaps.a */,
3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */,
6DFE0E611CE9446B8B39E61E /* libimageCropPicker.a */,
75426ED753E94FDF955E27D9 /* libRNImagePicker.a */,
F17AA23BABD64924A34416D0 /* libRNNetworkInfo.a */,
);
name = "Recovered References";
sourceTree = "<group>";
@ -960,6 +1009,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
Base,
);
@ -975,6 +1025,10 @@
ProductGroup = BE5EAC32221B835A00E92E5B /* Products */;
ProjectRef = 1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */;
},
{
ProductGroup = B531CE54224BE134002E8E5F /* Products */;
ProjectRef = 560B0A0D61754DCFA99F6FFB /* imageCropPicker.xcodeproj */;
},
{
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
@ -1039,6 +1093,14 @@
ProductGroup = BE302B6F221B7AC7005626CF /* Products */;
ProjectRef = BE302B6E221B7AC7005626CF /* RNGestureHandler.xcodeproj */;
},
{
ProductGroup = B531CE58224BE134002E8E5F /* Products */;
ProjectRef = ED5C7473CD764393A9F1944C /* RNImagePicker.xcodeproj */;
},
{
ProductGroup = B531CE56224BE134002E8E5F /* Products */;
ProjectRef = 293AF9FDDC2442BDBF3C2FE0 /* RNNetworkInfo.xcodeproj */;
},
{
ProductGroup = BE5EABF2221B834400E92E5B /* Products */;
ProjectRef = 664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */;
@ -1314,6 +1376,27 @@
remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
B531CE5C224BE135002E8E5F /* libimageCropPicker.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libimageCropPicker.a;
remoteRef = B531CE5B224BE135002E8E5F /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
B531CE5F224BE135002E8E5F /* libRNImagePicker.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNImagePicker.a;
remoteRef = B531CE5E224BE135002E8E5F /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
B531CE62224BE135002E8E5F /* libRNNetworkInfo.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNNetworkInfo.a;
remoteRef = B531CE61224BE135002E8E5F /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE302B6C221B7860005626CF /* libRNCamera.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;

View File

View File

@ -51,9 +51,9 @@
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@ -108,16 +108,15 @@
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "app.app"
BlueprintName = "app"
ReferencedContainer = "container:app.xcodeproj">
BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192"
BuildableName = "libReact.a"
BlueprintName = "React"
ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">

0
App/ios/app/AppDelegate.h Normal file → Executable file
View File

0
App/ios/app/AppDelegate.m Normal file → Executable file
View File

17
App/ios/app/Base.lproj/LaunchScreen.xib Normal file → Executable file
View File

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
@ -12,20 +15,20 @@
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Henrique Dias" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<rect key="frame" x="20" y="439" width="441" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="app" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="ENEI 2019" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>

View File

@ -1,48 +1,57 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "ItunesArtwork@2x.png",
"scale" : "1x"
}
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

0
App/ios/app/Images.xcassets/Contents.json Normal file → Executable file
View File

54
App/ios/app/Info.plist Normal file → Executable file
View File

@ -2,20 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIAppFonts</key>
<array>
<string/>
<string>FontAwesome5_Solid.ttf</string>
<string>FontAwesome5_Regular.ttf</string>
<string>FontAwesome5_Brands.ttf</string>
<string>FontAwesome.ttf</string>
<string>Foundation.ttf</string>
<string>Ionicons.ttf</string>
</array>
<key>LSApplicationCategoryType</key>
<string/>
<key>CFBundleDisplayName</key>
<string>app</string>
<string>ENEI 2019</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@ -27,11 +15,13 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<string>1.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<string>8</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
@ -47,21 +37,45 @@
</dict>
</dict>
</dict>
<key>NSAppleMusicUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSCalendarsUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSCameraUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSMotionUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>Not used, just added this key because i used react-native and needed this keys for approval.</string>
<key>UIAppFonts</key>
<array>
<string>MaterialIcons.ttf</string>
<string>FontAwesome5_Solid.ttf</string>
<string>FontAwesome5_Regular.ttf</string>
<string>FontAwesome5_Brands.ttf</string>
<string>FontAwesome.ttf</string>
<string>Foundation.ttf</string>
<string>Ionicons.ttf</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

0
App/ios/app/main.m Normal file → Executable file
View File

0
App/ios/appTests/Info.plist Normal file → Executable file
View File

0
App/ios/appTests/appTests.m Normal file → Executable file
View File

123
App/package-lock.json generated
View File

@ -829,6 +829,46 @@
"to-fast-properties": "^2.0.0"
}
},
"@expo/vector-icons": {
"version": "github:expo/vector-icons#d0fb774a001b047d223cfa5e9537220b20591efd",
"from": "github:expo/vector-icons#expo-font-fix",
"requires": {
"lodash": "^4.17.4",
"react-native-vector-icons": "6.0.0"
},
"dependencies": {
"react-native-vector-icons": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.0.0.tgz",
"integrity": "sha512-uF3oWb3TV42uXi2apVOZHw9oy9Nr5SXDVwOo1umQWo/yYCrDzXyVfq14DzezgEbJ9jfc/yghBelj0agkXmOKlg==",
"requires": {
"lodash": "^4.0.0",
"prop-types": "^15.6.2",
"yargs": "^8.0.2"
}
},
"yargs": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
"integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
"requires": {
"camelcase": "^4.1.0",
"cliui": "^3.2.0",
"decamelize": "^1.1.1",
"get-caller-file": "^1.0.1",
"os-locale": "^2.0.0",
"read-pkg-up": "^2.0.0",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^7.0.0"
}
}
}
},
"@expo/websql": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@expo/websql/-/websql-1.0.1.tgz",
@ -2918,6 +2958,7 @@
"integrity": "sha512-xo8wZ9/4F3P1xN9nKFSJM3Gb2m0p05aRncjgFF+jxM5XfvKkUrzW0a6FYOY/h/r2r1wyQI7OTBPTiTH/GxuwgA==",
"requires": {
"@babel/runtime": "^7.1.2",
"@expo/vector-icons": "github:expo/vector-icons#expo-font-fix",
"@expo/websql": "^1.0.1",
"@types/fbemitter": "^2.0.32",
"@types/invariant": "^2.2.29",
@ -2979,6 +3020,7 @@
"qs": "^6.5.0",
"react-native-branch": "2.2.5",
"react-native-gesture-handler": "~1.0.14",
"react-native-maps": "github:expo/react-native-maps#v0.22.1-exp.0",
"react-native-reanimated": "1.0.0-alpha.11",
"react-native-screens": "1.0.0-alpha.22",
"react-native-svg": "8.0.10",
@ -2988,14 +3030,6 @@
"whatwg-fetch": "^2.0.4"
},
"dependencies": {
"@expo/vector-icons": {
"version": "github:expo/vector-icons#d0fb774a001b047d223cfa5e9537220b20591efd",
"from": "github:expo/vector-icons#d0fb774a001b047d223cfa5e9537220b20591efd",
"requires": {
"lodash": "^4.17.4",
"react-native-vector-icons": "6.0.0"
}
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
@ -3032,47 +3066,17 @@
},
"react-native-maps": {
"version": "github:expo/react-native-maps#e6f98ff7272e5d0a7fe974a41f28593af2d77bb2",
"from": "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",
"integrity": "sha512-kSyAt0AeVU6N7ZonfV6dP6iZF8B7Bce+tk3eujXhzBGsLg0VSLnU7uE9VqJF0xdQrHR91ZjGgVMieo/8df9KTA=="
},
"react-native-vector-icons": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.0.0.tgz",
"integrity": "sha512-uF3oWb3TV42uXi2apVOZHw9oy9Nr5SXDVwOo1umQWo/yYCrDzXyVfq14DzezgEbJ9jfc/yghBelj0agkXmOKlg==",
"requires": {
"lodash": "^4.0.0",
"prop-types": "^15.6.2",
"yargs": "^8.0.2"
}
},
"whatwg-fetch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
},
"yargs": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
"integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
"requires": {
"camelcase": "^4.1.0",
"cliui": "^3.2.0",
"decamelize": "^1.1.1",
"get-caller-file": "^1.0.1",
"os-locale": "^2.0.0",
"read-pkg-up": "^2.0.0",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^7.0.0"
}
}
}
},
@ -3742,7 +3746,8 @@
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
"bundled": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@ -3760,11 +3765,13 @@
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
"bundled": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -3777,15 +3784,18 @@
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
"bundled": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
"bundled": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true
"bundled": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@ -3888,7 +3898,8 @@
},
"inherits": {
"version": "2.0.3",
"bundled": true
"bundled": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@ -3898,6 +3909,7 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -3910,17 +3922,20 @@
"minimatch": {
"version": "3.0.4",
"bundled": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true
"bundled": true,
"optional": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@ -3937,6 +3952,7 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -4009,7 +4025,8 @@
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
"bundled": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@ -4019,6 +4036,7 @@
"once": {
"version": "1.4.0",
"bundled": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -4094,7 +4112,8 @@
},
"safe-buffer": {
"version": "5.1.1",
"bundled": true
"bundled": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@ -4124,6 +4143,7 @@
"string-width": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -4141,6 +4161,7 @@
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -4179,11 +4200,13 @@
},
"wrappy": {
"version": "1.0.2",
"bundled": true
"bundled": true,
"optional": true
},
"yallist": {
"version": "3.0.2",
"bundled": true
"bundled": true,
"optional": true
}
}
},