Merge remote-tracking branch 'Enei/master' into Borges
# Conflicts: # App/app/actions/index.js # App/app/screens/Home.js # App/package.json
This commit is contained in:
commit
e360963f3c
101
App/app/App.js
101
App/app/App.js
|
@ -8,16 +8,14 @@ import { connect } from 'react-redux';
|
|||
import QRCodeScanner from 'react-native-qrcode-scanner';
|
||||
import {UtilStyles} from './assets/styles'
|
||||
import * as Actions from './actions'; //Import your actions
|
||||
import {RkButton,
|
||||
RkTheme , RkText} from 'react-native-ui-kitten';
|
||||
import {RkButton, RkTheme , RkText} from 'react-native-ui-kitten';
|
||||
|
||||
import Router from './Router'
|
||||
import Router from './Router'
|
||||
|
||||
const SCREEN_HEIGHT = Dimensions.get("window").height;
|
||||
const SCREEN_WIDTH = Dimensions.get("window").width;
|
||||
|
||||
|
||||
|
||||
class App extends Component {
|
||||
|
||||
constructor(props) {
|
||||
|
@ -26,83 +24,88 @@ const SCREEN_WIDTH = Dimensions.get("window").width;
|
|||
|
||||
this.state = {
|
||||
|
||||
token:false,
|
||||
tokenData:'',
|
||||
loggedIn:false,
|
||||
onHold:true
|
||||
token:{valid:false},
|
||||
tokenData: '',
|
||||
onHold: true,
|
||||
logged:false
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
|
||||
|
||||
//verifica se o utilizador tem token guardado
|
||||
this.props.checkUser();
|
||||
console.log('logged:'+this.props.loggedIn);
|
||||
this.props.checkUser();
|
||||
|
||||
}
|
||||
|
||||
newJWT(jwt) {
|
||||
this.setState({
|
||||
jwt: jwt
|
||||
});
|
||||
}
|
||||
onSuccess = (e) => {
|
||||
|
||||
|
||||
this.props.login(e.data,'80f3b6e5');
|
||||
console.log("tentativa de login");
|
||||
|
||||
|
||||
};
|
||||
|
||||
render() {
|
||||
render() {
|
||||
|
||||
if(this.props.onHold){
|
||||
if(this.props.onHold && !this.props.logged){
|
||||
|
||||
|
||||
return (
|
||||
|
||||
<View>
|
||||
<Text>CARREGANDO {this.props.onHold}</Text>
|
||||
<ActivityIndicator size="large" color="#0000ff" />
|
||||
</View>
|
||||
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
//console.log('token... '+ this.props.logged)
|
||||
|
||||
console.log('token... '+ this.props.token)
|
||||
//se existir token
|
||||
|
||||
|
||||
//se existir token
|
||||
if(this.props.logged){
|
||||
|
||||
return (
|
||||
|
||||
if(this.props.token == true){
|
||||
|
||||
return (
|
||||
|
||||
<Router></Router>
|
||||
<Router></Router>
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
}else{
|
||||
}
|
||||
else{
|
||||
|
||||
//se não existir vai para o ecrã de scan QR
|
||||
return (
|
||||
//se não existir vai para o ecrã de scan QR
|
||||
return (
|
||||
|
||||
|
||||
<QRCodeScanner
|
||||
<QRCodeScanner
|
||||
|
||||
showMarker
|
||||
showMarker
|
||||
reactivate={true}
|
||||
onRead={this.onSuccess.bind(this)}
|
||||
cameraStyle={{ height: SCREEN_HEIGHT }}
|
||||
|
||||
onRead={this.onSuccess.bind(this)}
|
||||
cameraStyle={{ height: SCREEN_HEIGHT }}
|
||||
|
||||
customMarker={
|
||||
customMarker={
|
||||
|
||||
<View style={styles.rectangleContainer}>
|
||||
<View style={styles.logo}>
|
||||
<Image style={UtilStyles.loginImage}
|
||||
<View style={styles.rectangleContainer}>
|
||||
<View style={styles.logo}>
|
||||
<Image style={UtilStyles.loginImage}
|
||||
source={require('./assets/img/logo.png')}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
|
||||
<View style={{ flexDirection: "row" }}>
|
||||
<View style={styles.leftAndRightOverlay}>
|
||||
</View>
|
||||
<View style={{ flexDirection: "row" }}>
|
||||
<View style={styles.leftAndRightOverlay}>
|
||||
</View>
|
||||
|
||||
<View style={styles.rectangle}>
|
||||
|
||||
|
@ -127,7 +130,9 @@ const SCREEN_WIDTH = Dimensions.get("window").width;
|
|||
/>
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -215,10 +220,10 @@ function mapStateToProps(state, props) {
|
|||
|
||||
return {
|
||||
|
||||
token: state.apiReducer.token,
|
||||
tokenData:state.apiReducer.tokenData,
|
||||
token: state.apiReducer.token,
|
||||
loggedIn: state.apiReducer.loggedIn,
|
||||
onHold: state.apiReducer.onHold
|
||||
onHold: state.apiReducer.onHold,
|
||||
logged:state.apiReducer.logged
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,14 @@ export const DATA_AVAILABLE = 'DATA_AVAILABLE';
|
|||
export const API_LOGIN = 'API_LOGIN';
|
||||
export const CHECK_USER='CHECK_USER';
|
||||
export const LOGOUT_USER= 'LOGOUT_USER';
|
||||
<<<<<<< HEAD
|
||||
export const USER_INFO= 'USER_INFO';
|
||||
=======
|
||||
export const USER_INFO= 'USER_INFO'
|
||||
export const HOLD='HOLD'
|
||||
export const GET_EVENTS='GET_EVENTS'
|
||||
|
||||
>>>>>>> Enei/master
|
||||
|
||||
import { AsyncStorage } from 'react-native';
|
||||
|
||||
|
@ -24,44 +31,152 @@ export function getData(){
|
|||
|
||||
};
|
||||
}
|
||||
const saveToken = async token => {
|
||||
try {
|
||||
|
||||
await AsyncStorage.setItem('userToken', token);
|
||||
export function getEvents(user){
|
||||
return (dispatch)=>{
|
||||
var o=[];
|
||||
console.log("chegou aqui")
|
||||
|
||||
|
||||
for(var key in user.Sessions){
|
||||
|
||||
o.push({
|
||||
time:user.Sessions[key].SessionStart.substr(11, 14),
|
||||
timeEnd: user.Sessions[key].SessionEnd.substr(11, 14),
|
||||
lineColor:'#009688',
|
||||
imageUrl: 'https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/Vjkyj2hBg/welcome-white-sign-with-falling-colorful-confetti-animation-on-white-background_sglmmh3qm__F0013.png',
|
||||
description:user.Sessions[key].Description,
|
||||
name:user.Sessions[key].Name,
|
||||
Enrolled:user.Sessions[key].Enrolled,
|
||||
MaxAttendees:user.Sessions[key].MaxAttendees
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
dispatch({
|
||||
type: GET_EVENTS,
|
||||
events: o
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
const saveToken = async token => {
|
||||
|
||||
|
||||
try {
|
||||
await AsyncStorage.setItem('refreshToken', token.refreshToken).catch(a=>{
|
||||
|
||||
})
|
||||
await AsyncStorage.setItem('userToken', token.access_token).catch(a=>{
|
||||
|
||||
})
|
||||
await AsyncStorage.setItem('expirationDateToken', token.expirationDateToken.toString()).catch(a=>{
|
||||
|
||||
})
|
||||
|
||||
|
||||
} catch (error) {
|
||||
// Error retrieving data
|
||||
console.log(error.message);
|
||||
|
||||
// Error retrieving data
|
||||
console.log(error.message);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
const getToken = async () => {
|
||||
<<<<<<< HEAD
|
||||
var token;
|
||||
=======
|
||||
|
||||
obj={}
|
||||
>>>>>>> Enei/master
|
||||
try {
|
||||
token = await AsyncStorage.getItem('userToken') || 'none';
|
||||
|
||||
|
||||
obj.access_token = await AsyncStorage.getItem('userToken') || 'none';
|
||||
obj.expirationDateToken = await AsyncStorage.getItem('expirationDateToken') || 'none';
|
||||
obj.refreshToken = await AsyncStorage.getItem('refreshToken') || 'none';
|
||||
|
||||
|
||||
} catch (error) {
|
||||
// Error retrieving data
|
||||
console.log(error.message);
|
||||
}
|
||||
return token;
|
||||
return obj;
|
||||
}
|
||||
|
||||
const deleteToken = async () => {
|
||||
try {
|
||||
await AsyncStorage.removeItem('userToken');
|
||||
await AsyncStorage.removeItem('expirationDateToken');
|
||||
await AsyncStorage.removeItem('refreshToken');
|
||||
} catch (error) {
|
||||
// Error retrieving data
|
||||
console.log(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
const renewToken=(refresh)=>{
|
||||
|
||||
|
||||
var details = {
|
||||
|
||||
|
||||
'grant_type': 'refresh_token',
|
||||
'refresh_token':refresh
|
||||
|
||||
};
|
||||
var formBody = [];
|
||||
|
||||
for (var property in details) {
|
||||
var encodedKey = encodeURIComponent(property);
|
||||
var encodedValue = encodeURIComponent(details[property]);
|
||||
formBody.push(encodedKey + "=" + encodedValue);
|
||||
}
|
||||
|
||||
formBody = formBody.join("&");
|
||||
console.log(refresh);
|
||||
|
||||
fetch('http://enei2019.uingress.com/internal/api/token', {
|
||||
|
||||
method: 'POST',
|
||||
|
||||
headers: {
|
||||
|
||||
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
||||
},
|
||||
|
||||
body: formBody
|
||||
|
||||
}).catch(err=>{
|
||||
|
||||
}).then(parsed=>{
|
||||
|
||||
// console.log(a);
|
||||
var obj={
|
||||
access_token:parsed.access_token,
|
||||
expirationDateToken:Math.round(new Date().getTime()/1000) + parsed.expires_in,
|
||||
refreshToken:parsed.refresh_token,
|
||||
valid:true
|
||||
};
|
||||
|
||||
|
||||
})
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
export function login(user, pass){
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
console.log('user: ' +user + ' password: '+pass );
|
||||
|
||||
var details = {
|
||||
'username': user,
|
||||
'password': pass,
|
||||
|
@ -69,100 +184,163 @@ export function login(user, pass){
|
|||
};
|
||||
|
||||
var formBody = [];
|
||||
|
||||
for (var property in details) {
|
||||
var encodedKey = encodeURIComponent(property);
|
||||
var encodedValue = encodeURIComponent(details[property]);
|
||||
formBody.push(encodedKey + "=" + encodedValue);
|
||||
}
|
||||
|
||||
formBody = formBody.join("&");
|
||||
|
||||
fetch('http://enei2019.uingress.com/internal/api/token', {
|
||||
|
||||
<<<<<<< HEAD
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
||||
},
|
||||
body: formBody
|
||||
=======
|
||||
method: 'POST',
|
||||
|
||||
headers: {
|
||||
|
||||
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
||||
},
|
||||
|
||||
body: formBody
|
||||
>>>>>>> Enei/master
|
||||
|
||||
}).catch(err=>{
|
||||
|
||||
console.log(err);
|
||||
|
||||
alert("error");
|
||||
|
||||
dispatch({
|
||||
type: API_LOGIN,
|
||||
loggedIn:false,
|
||||
logged:false,
|
||||
tokenData:'error'
|
||||
});
|
||||
|
||||
<<<<<<< HEAD
|
||||
}).then(res=>res.json()).then(( parsed) => {
|
||||
|
||||
console.log('parsed'+parsed.access_token)
|
||||
|
||||
// deviceStorage.saveItem(parsed.access_token);
|
||||
try {
|
||||
=======
|
||||
}).then(res=>res.json()).then(parsed=>{
|
||||
>>>>>>> Enei/master
|
||||
|
||||
saveToken(parsed.access_token).then(a=>{
|
||||
console.log('sucess');
|
||||
}).catch(a=>{
|
||||
console.log('error saving')
|
||||
})
|
||||
|
||||
} catch (error) {
|
||||
console.log('Error saving token')
|
||||
}
|
||||
|
||||
dispatch({
|
||||
type: API_LOGIN,
|
||||
loggedIn:true,
|
||||
token:true,
|
||||
tokenData:parsed
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
).then(a=>{})
|
||||
var obj={
|
||||
access_token:parsed.access_token,
|
||||
expirationDateToken:Math.round(new Date().getTime()/1000) + parsed.expires_in,
|
||||
refreshToken:parsed.refresh_token,
|
||||
valid:true
|
||||
};
|
||||
|
||||
|
||||
|
||||
// deviceStorage.saveItem(parsed.access_token);
|
||||
|
||||
saveToken(obj).then(a=>{
|
||||
|
||||
obj.valid=true;
|
||||
|
||||
dispatch({
|
||||
type: API_LOGIN,
|
||||
logged:true,
|
||||
token: obj
|
||||
|
||||
});
|
||||
|
||||
}).catch(a=>{
|
||||
|
||||
console.log('error saving')
|
||||
|
||||
obj.valid=false;
|
||||
|
||||
dispatch({
|
||||
type: API_LOGIN,
|
||||
logged:true,
|
||||
token: obj
|
||||
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
).then(a=>{
|
||||
dispatch({
|
||||
type: API_LOGIN,
|
||||
logged:true,
|
||||
token: obj
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export function getUserInfo(){
|
||||
export function hold(){
|
||||
return (dispatch)=>{
|
||||
getToken().then(a=>{
|
||||
dispatch({
|
||||
type: HOLD,
|
||||
onHold:true
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function getUserInfo(token){
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
<<<<<<< HEAD
|
||||
console.log('get user info');
|
||||
let token;
|
||||
let obj = {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Authorization':`Bearer ${a}`,
|
||||
=======
|
||||
|
||||
//TODO: verificar validade do token
|
||||
|
||||
console.log('Chamada "getUserInfo"');
|
||||
|
||||
|
||||
var obj = {
|
||||
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Authorization':"Bearer "+token.access_token,
|
||||
>>>>>>> Enei/master
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
fetch('http://enei2019.uingress.com/internal/api/Attendee/Detail', obj)
|
||||
|
||||
.then(function(res) {
|
||||
|
||||
//console.log(res._bodyText);
|
||||
|
||||
let obj = JSON.parse(res._bodyText);
|
||||
|
||||
dispatch({
|
||||
type: USER_INFO,
|
||||
user: obj
|
||||
|
||||
});
|
||||
|
||||
dispatch({ type: USER_INFO, user: obj,onHold:false, logged:true });
|
||||
|
||||
}).catch(function(res){
|
||||
dispatch({ type: USER_INFO, user: '',onHold:false, logged:true });
|
||||
})
|
||||
.then(function(resJson) {
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -187,25 +365,62 @@ export function logoutUser(){
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
export function checkUser(){
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
getToken().then(a=>{
|
||||
|
||||
console.log('sucess: '+a)
|
||||
|
||||
if(a=='none'){
|
||||
dispatch({type: CHECK_USER,token:false, tokenData:'error', });
|
||||
|
||||
if(a.access_token=='none'){
|
||||
|
||||
a.valid=false;
|
||||
|
||||
console.log('check user deu falso')
|
||||
|
||||
dispatch({type: CHECK_USER,token:a,logged:false, onHold:false});
|
||||
|
||||
}
|
||||
else{
|
||||
dispatch({type: CHECK_USER,token:true, tokenData:a,});
|
||||
|
||||
a.valid=true;
|
||||
|
||||
|
||||
console.log('Existe Token em memória' )
|
||||
|
||||
//se expirar
|
||||
if(Math.round(new Date().getTime()/1000) >= a.expirationDateToken){
|
||||
|
||||
// a.valid=false;
|
||||
|
||||
//chamar funçao para renovar
|
||||
console.log("expirou")
|
||||
|
||||
renewToken(a.refreshToken).then(b=>{
|
||||
// a.valid=true;
|
||||
deleteToken();
|
||||
saveToken(b);
|
||||
console.log("asdasdasdasd")
|
||||
dispatch({type: CHECK_USER, token:b, logged:true, onHold:false});
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
console.log("Tempo restante token: "+ Math.round((a.expirationDateToken-Math.round(new Date().getTime()/1000) )/60) +" Minutos");
|
||||
|
||||
//fazer validação da data e renovar o token
|
||||
|
||||
dispatch({type: CHECK_USER, token:a, logged:true, onHold:false});
|
||||
}
|
||||
|
||||
|
||||
}).catch(a=>{
|
||||
|
||||
console.log('erros');
|
||||
dispatch({type: CHECK_USER,token:false, tokenData:'error'});
|
||||
dispatch({type: CHECK_USER,token:false, logged:false});
|
||||
})
|
||||
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 338 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.7 KiB |
|
@ -1,6 +1,6 @@
|
|||
import { combineReducers } from 'redux';
|
||||
|
||||
import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO } from "../actions/" //Import the actions types constant we defined in our actions
|
||||
import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS } from "../actions/" //Import the actions types constant we defined in our actions
|
||||
|
||||
|
||||
let dataState = { data: [], loading:true ,token:true};
|
||||
|
@ -15,32 +15,44 @@ const dataReducer = (state = dataState, action) => {
|
|||
}
|
||||
};
|
||||
|
||||
let apiState= {token:false, tokenData:'error', loggedIn:false, onHold:true, user:{}}
|
||||
let apiState= { token:{valid:false}, tokenData:'error', logged:false, onHold:true, user:{}, events:[]}
|
||||
|
||||
const apiReducer = (state = apiState, action) => {
|
||||
|
||||
switch(action.type){
|
||||
|
||||
case HOLD:
|
||||
|
||||
state=Object.assign({},state, {onHold:true});
|
||||
return state;
|
||||
|
||||
case API_LOGIN:
|
||||
|
||||
state=Object.assign({},state, { loggedIn:action.loggedIn, tokenData:action.tokenData , token:action.token});
|
||||
state=Object.assign({},state, { logged:action.logged, token:action.token});
|
||||
|
||||
return state;
|
||||
|
||||
case CHECK_USER:
|
||||
|
||||
state=Object.assign({},state, { token:action.token, tokenData:action.tokenData, onHold:false});
|
||||
state=Object.assign({},state, { token:action.token, logged:action.logged, onHold:action.onHold});
|
||||
|
||||
return state;
|
||||
|
||||
case LOGOUT_USER:
|
||||
|
||||
state=Object.assign({},state, { token:action.token, tokenData:action.tokenData, loggedIn:action.loggedIn});
|
||||
state=Object.assign({},state, { token:action.token, logged:false});
|
||||
|
||||
return state;
|
||||
|
||||
case USER_INFO:
|
||||
|
||||
state=Object.assign({},state, { user: action.user });
|
||||
state=Object.assign({},state, { user: action.user, token: action.token , loggedIn:action.loggedIn, onHold:action.onHold});
|
||||
|
||||
return state;
|
||||
|
||||
case GET_EVENTS:
|
||||
|
||||
state=Object.assign({},state, { events: action.events});
|
||||
|
||||
return state;
|
||||
|
||||
|
|
|
@ -1,22 +1,333 @@
|
|||
import React from 'react';
|
||||
import { StyleSheet, Text, View } from 'react-native';
|
||||
import * as React from 'react';
|
||||
import { View, StyleSheet, Dimensions , Image, ScrollView,Text, Button} from 'react-native';
|
||||
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
|
||||
import {
|
||||
RkButton,RkCard, RkText,
|
||||
RkTheme
|
||||
} from 'react-native-ui-kitten';
|
||||
import Timeline from 'react-native-timeline-feed'
|
||||
|
||||
export default class Calendar extends React.Component {
|
||||
render() {
|
||||
const { navigate } = this.props.navigation;
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.title}>ups...</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
import * as Progress from 'react-native-progress';
|
||||
|
||||
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import {bindActionCreators} from 'redux';
|
||||
|
||||
import * as Actions from '../actions'; //Import your actionss
|
||||
|
||||
|
||||
|
||||
const formatObj= (obj)=>{
|
||||
|
||||
let a={};
|
||||
|
||||
a.push({
|
||||
|
||||
|
||||
})
|
||||
|
||||
return a
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
const ThirdRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#efc44a' }]} />
|
||||
);
|
||||
|
||||
|
||||
const FourthRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#49ef97' }]} />
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
class Calendar extends React.Component {
|
||||
|
||||
state = {
|
||||
index: 0,
|
||||
routes: [
|
||||
{ key: 'first', title: 'Sex 12' },
|
||||
{ key: 'second', title: 'Sab 13' },
|
||||
{ key: 'third', title: 'Dom 14' },
|
||||
{ key: 'fourth', title: 'Seg 15' },
|
||||
|
||||
],
|
||||
};
|
||||
|
||||
componentDidMount(){
|
||||
|
||||
this.props.getEvents(this.props.user);
|
||||
console.log('didMount');
|
||||
console.log(this.props.events);
|
||||
}
|
||||
|
||||
|
||||
|
||||
renderDetail = ({ item, index })=> {
|
||||
// <Image source={{ uri:item.imageUrl, width:'100%' , height:100 }} style={{borderRadius:0}}/>
|
||||
return (
|
||||
|
||||
|
||||
<View style={styles.event}>
|
||||
<Text style={[styles.title]}>{item.name}</Text>
|
||||
<View>
|
||||
|
||||
|
||||
<Text style={styles.description}>{item.description}</Text>
|
||||
<View style={styles.details}>
|
||||
<Progress.Bar color={'#42a5f5'} progress={0.3} unfilledColor = {'white'}width={210} />
|
||||
<Text>{item.Enrolled} / {item.MaxAttendees}</Text>
|
||||
</View>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
renderEvents = ({ item, index })=> {
|
||||
|
||||
return (
|
||||
<View style={styles.event}>
|
||||
<Text style={[styles.title]}>{item.title}</Text>
|
||||
<View>
|
||||
|
||||
<Image source={{ uri:item.imageUrl, width:'100%' , height:100 }} style={{borderRadius:0}}/>
|
||||
|
||||
|
||||
|
||||
<Text style={styles.description}>{item.description}</Text>
|
||||
<View style={styles.details}>
|
||||
<Progress.Bar color={'#42a5f5'} progress={0.3} unfilledColor = {'white'}width={210} />
|
||||
<Text>1/50</Text>
|
||||
</View>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
_update=()=>{
|
||||
this.setState({ user: this.props.user });
|
||||
console.log(this.props.events);
|
||||
}
|
||||
|
||||
|
||||
|
||||
constructor(){
|
||||
|
||||
super()
|
||||
|
||||
|
||||
|
||||
const archeryImgSource = require('../assets/img/archery.png');
|
||||
const badmintonImgSource = require('../assets/img/badminton.png');
|
||||
const lunchImgSource = require('../assets/img/lunch.png');
|
||||
const soccerImgSource = require('../assets/img/soccer.png');
|
||||
const dumbbellImgSource = require('../assets/img/dumbbell.png');
|
||||
|
||||
const ArcheryImage = (props) => <Image source={archeryImgSource} {...props} />;
|
||||
const BadmintonImage = (props) => <Image source={badmintonImgSource} {...props} />;
|
||||
const LunchImage = (props) => <Image source={lunchImgSource} {...props} />;
|
||||
const SoccerImage = (props) => <Image source={soccerImgSource} {...props} />;
|
||||
const DumbbellImage = (props) => <Image source={dumbbellImgSource} {...props} />;
|
||||
const VectorIconImage = (props) => <Image source={vectorIconImgSource} {...props} />;
|
||||
|
||||
this.data = [
|
||||
|
||||
|
||||
{
|
||||
time: '09:30',
|
||||
title: 'Sessão de Check-In',
|
||||
description: 'Os participantes devem fazer o check-in e recolher o kit fornecido pela organização',
|
||||
lineColor:'#009688',
|
||||
icon: ArcheryImage,
|
||||
imageUrl: 'https://blogsimages.adobe.com/conversations/files/2014/03/Check_In-1.jpg'
|
||||
},
|
||||
{
|
||||
time: '17:45',
|
||||
title: 'Sessão de Abertura',
|
||||
lineColor:'#009688',
|
||||
description: 'Bem vindo a Coimbra, a cidade dos estudantes! Obrigado por participares na 13ª edição do ENEI.',
|
||||
icon: BadmintonImage,
|
||||
imageUrl: 'https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/Vjkyj2hBg/welcome-white-sign-with-falling-colorful-confetti-animation-on-white-background_sglmmh3qm__F0013.png'
|
||||
},
|
||||
{
|
||||
time: '19:30',
|
||||
title: 'Jantar',
|
||||
lineColor:'#009688',
|
||||
description: 'Time to eat',
|
||||
icon: BadmintonImage,
|
||||
imageUrl: 'https://www.retailmenot.com/blog/wp-content/uploads/2016/08/kids-eat-free-hero1-1471459190.jpg'
|
||||
},
|
||||
|
||||
{
|
||||
time: '23:30',
|
||||
title: 'Festarola',
|
||||
lineColor:'#009688',
|
||||
description: 'Sabes beber? Se não sabes, aprende com os da casa!',
|
||||
icon: BadmintonImage,
|
||||
imageUrl: 'http://www.revistaversatille.com.br/wp-content/uploads/Party.jpg'
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
const FirstRoute = () => (
|
||||
|
||||
|
||||
<ScrollView contentContainerStyle={styles.contentContainer} >
|
||||
|
||||
|
||||
<Button onPress={this._update} title="LOGOUT"/>
|
||||
<Timeline
|
||||
|
||||
|
||||
|
||||
data={this.props.events}
|
||||
|
||||
timeContainerStyle={{minWidth:52, marginTop: 5}}
|
||||
timeStyle={{textAlign: 'center', backgroundColor:'#ff9797', color:'white', padding:5, borderRadius:13}}
|
||||
descriptionStyle={{color:'gray'}}
|
||||
|
||||
renderDetail={this.renderDetail}
|
||||
|
||||
|
||||
flatListProps={{
|
||||
style:{
|
||||
|
||||
margin:15
|
||||
}
|
||||
|
||||
|
||||
}}
|
||||
keyExtractor={(item, index) => index.toString()}
|
||||
|
||||
|
||||
/>
|
||||
|
||||
|
||||
</ScrollView>
|
||||
|
||||
)
|
||||
const SecondRoute = () => (
|
||||
|
||||
|
||||
<ScrollView contentContainerStyle={styles.contentContainer} >
|
||||
|
||||
|
||||
<Timeline
|
||||
|
||||
|
||||
|
||||
data={this.props.events}
|
||||
|
||||
timeContainerStyle={{minWidth:52, marginTop: 5}}
|
||||
timeStyle={{textAlign: 'center', backgroundColor:'#ff9797', color:'white', padding:5, borderRadius:13}}
|
||||
descriptionStyle={{color:'gray'}}
|
||||
|
||||
renderDetail={this.renderDetail}
|
||||
|
||||
|
||||
flatListProps={{
|
||||
style:{
|
||||
|
||||
margin:15
|
||||
}
|
||||
|
||||
|
||||
}}
|
||||
keyExtractor={(item, index) => index.toString()}
|
||||
|
||||
|
||||
/>
|
||||
|
||||
|
||||
</ScrollView>
|
||||
|
||||
)
|
||||
return (
|
||||
|
||||
|
||||
<TabView
|
||||
navigationState={this.state}
|
||||
renderScene={SceneMap({
|
||||
first: FirstRoute,
|
||||
second: SecondRoute,
|
||||
third: ThirdRoute,
|
||||
fourth: FourthRoute
|
||||
})}
|
||||
onIndexChange={index => this.setState({ index })}
|
||||
initialLayout={{ width: Dimensions.get('window').width,height: Dimensions.get('window').height}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
details:{
|
||||
backgroundColor:"#e0e0e0",
|
||||
borderBottomRightRadius:10,
|
||||
borderBottomLeftRadius:10,
|
||||
padding:10
|
||||
},
|
||||
description:{
|
||||
padding:10
|
||||
},
|
||||
title:{
|
||||
color:'#212121',
|
||||
fontWeight: 'bold',
|
||||
fontSize:15,
|
||||
padding:10
|
||||
},
|
||||
event:{
|
||||
borderRadius:10,
|
||||
backgroundColor:'#eeeeee',
|
||||
|
||||
},
|
||||
scene: {
|
||||
flex: 1,
|
||||
backgroundColor: '#fff',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-around',
|
||||
},
|
||||
contentContainer: {
|
||||
paddingVertical: 20
|
||||
}
|
||||
});
|
||||
});RkTheme.setType('RkCard', 'story', {
|
||||
img: {
|
||||
height: 100,
|
||||
opacity: 0.7
|
||||
},
|
||||
header: {
|
||||
alignSelf: 'center'
|
||||
},
|
||||
content:{
|
||||
alignSelf:'center'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function mapStateToProps(state, props) {
|
||||
|
||||
return {
|
||||
|
||||
token: state.apiReducer.token,
|
||||
user: state.apiReducer.user,
|
||||
logged: state.apiReducer.logged,
|
||||
events: state.apiReducer.events
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function mapDispatchToProps(dispatch) {
|
||||
|
||||
return bindActionCreators(Actions, dispatch);
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(Calendar);
|
|
@ -1,22 +1,60 @@
|
|||
import React from 'react';
|
||||
import { StyleSheet, Text, View } from 'react-native';
|
||||
import * as React from 'react';
|
||||
import { View, StyleSheet, Dimensions } from 'react-native';
|
||||
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
|
||||
|
||||
export default class Eventos extends React.Component {
|
||||
render() {
|
||||
const { navigate } = this.props.navigation;
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.title}>Eventos</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const FirstRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#ff4081' }]} />
|
||||
);
|
||||
const SecondRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} />
|
||||
);
|
||||
|
||||
|
||||
const ThirdRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} />
|
||||
);
|
||||
|
||||
const FourthRoute = () => (
|
||||
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} />
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export default class Eventos extends React.Component {
|
||||
|
||||
state = {
|
||||
index: 0,
|
||||
routes: [
|
||||
{ key: 'first', title: 'Festarola' },
|
||||
{ key: 'second', title: 'Febrada' },
|
||||
{ key: 'third', title: 'Rally' },
|
||||
{ key: 'fourth', title: 'Peddy' },
|
||||
|
||||
],
|
||||
};
|
||||
|
||||
render() {
|
||||
return (
|
||||
<TabView
|
||||
navigationState={this.state}
|
||||
renderScene={SceneMap({
|
||||
first: FirstRoute,
|
||||
second: SecondRoute,
|
||||
third:ThirdRoute,
|
||||
fourth: FourthRoute
|
||||
})}
|
||||
onIndexChange={index => this.setState({ index })}
|
||||
initialLayout={{ width: Dimensions.get('window').width }}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
scene: {
|
||||
flex: 1,
|
||||
backgroundColor: '#fff',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-around',
|
||||
}
|
||||
},
|
||||
});
|
|
@ -1,15 +1,30 @@
|
|||
import React, {Component} from 'react';
|
||||
<<<<<<< HEAD
|
||||
import {Button, View, Text, TouchableOpacity, FlatList, ActivityIndicator} from 'react-native';
|
||||
=======
|
||||
|
||||
import { Button, View, Text , TouchableOpacity, FlatList, ActivityIndicator} from 'react-native';
|
||||
|
||||
>>>>>>> Enei/master
|
||||
import {
|
||||
RkButton,
|
||||
RkTheme
|
||||
} from 'react-native-ui-kitten';
|
||||
<<<<<<< HEAD
|
||||
import {connect} from 'react-redux';
|
||||
=======
|
||||
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
>>>>>>> Enei/master
|
||||
import {bindActionCreators} from 'redux';
|
||||
|
||||
import * as Actions from '../actions'; //Import your actionss
|
||||
|
||||
import Counter from './Counter'
|
||||
|
||||
import {createStore} from 'redux';
|
||||
|
||||
import {Provider} from 'react-redux'
|
||||
|
||||
|
||||
|
@ -20,11 +35,18 @@ class Home extends Component {
|
|||
super(props);
|
||||
|
||||
this.state = {
|
||||
<<<<<<< HEAD
|
||||
token: false,
|
||||
tokenData: '',
|
||||
loggedIn: false,
|
||||
onHold: true,
|
||||
user: {}
|
||||
=======
|
||||
token:{valid:false},
|
||||
logged:true,
|
||||
onHold:true,
|
||||
user:{Name:''}
|
||||
>>>>>>> Enei/master
|
||||
};
|
||||
|
||||
|
||||
|
@ -33,25 +55,47 @@ class Home extends Component {
|
|||
componentDidMount() {
|
||||
|
||||
|
||||
this.props.hold();
|
||||
//this.props.logoutUser();
|
||||
<<<<<<< HEAD
|
||||
|
||||
this.props.getUserInfo();
|
||||
|
||||
console.log('logged:' + this.props.loggedIn);
|
||||
=======
|
||||
//console.log(this.props.token);
|
||||
|
||||
this.props.getUserInfo(this.props.token);
|
||||
|
||||
console.log('there we go')
|
||||
|
||||
//console.log('logged:'+this.props.logged);
|
||||
>>>>>>> Enei/master
|
||||
|
||||
//console.log(th2is.props)
|
||||
|
||||
console.log(this.props.user)
|
||||
|
||||
}
|
||||
|
||||
bClick() {
|
||||
|
||||
//this.props.logoutUser();
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
let a={};
|
||||
// this.setState({ user: this.props.user });
|
||||
// console.log(this.props.user)
|
||||
//
|
||||
|
||||
|
||||
|
||||
>>>>>>> Enei/master
|
||||
//var navigate = this.props.navigation.navigate
|
||||
}
|
||||
|
||||
_logout = () => {
|
||||
<<<<<<< HEAD
|
||||
console.log("asdasd");
|
||||
// this.props.navigation.navigate('scan');
|
||||
this.props.getUserInfo();
|
||||
|
@ -63,17 +107,82 @@ class Home extends Component {
|
|||
console.log(this.props.token);
|
||||
const {navigate} = this.props.navigation;
|
||||
if (this.props.token) {
|
||||
=======
|
||||
|
||||
// this.props.navigation.navigate('scan');
|
||||
|
||||
// this.props.logout();
|
||||
this.props.logoutUser();
|
||||
}
|
||||
update=()=>{
|
||||
|
||||
console.log(this.props.user)
|
||||
|
||||
this.setState({ user: this.props.user });
|
||||
var o=[];
|
||||
|
||||
for(var key in this.props.user.Sessions){
|
||||
|
||||
|
||||
o.push({
|
||||
time:this.props.user.Sessions[key].SessionStart.substr(11, 16),
|
||||
timeEnd: this.props.user.Sessions[key].SessionEnd.substr(11, 16),
|
||||
lineColor:'#009688',
|
||||
imageUrl: 'https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/Vjkyj2hBg/welcome-white-sign-with-falling-colorful-confetti-animation-on-white-background_sglmmh3qm__F0013.png',
|
||||
description:this.props.user.Sessions[key].Description,
|
||||
name:this.props.user.Sessions[key].Name,
|
||||
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
console.log(this.props.user.Sessions);
|
||||
}
|
||||
render() {
|
||||
|
||||
|
||||
|
||||
const { navigate } = this.props.navigation;
|
||||
>>>>>>> Enei/master
|
||||
|
||||
if(this.props.onHold){
|
||||
|
||||
return (
|
||||
<<<<<<< HEAD
|
||||
<View>
|
||||
<Button onPress={this._logout} title="LOGOUT"/>
|
||||
<Text></Text>
|
||||
<Text>Nome: {this.props.user.Email}</Text>
|
||||
<Text>city: {this.props.user.City}</Text>
|
||||
<Text>phone: {this.props.user.Mobile}</Text>
|
||||
=======
|
||||
|
||||
<View>
|
||||
<Text>lollsss {this.props.onHold}</Text>
|
||||
<ActivityIndicator size="large" color="#0000ff" />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
>>>>>>> Enei/master
|
||||
|
||||
if(this.props.logged){
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
return (
|
||||
<View >
|
||||
|
||||
<Button onPress={this._logout} title="LOGOUT"/>
|
||||
<Button onPress={this.update} title="update"/>
|
||||
<Button onPress={this.bClick} title="Parse"/>
|
||||
<Text> Nomess: {this.props.user.Name}</Text>
|
||||
|
||||
<Text> city: {this.props.user.City}</Text>
|
||||
<Text> phone: {this.props.user.Mobile}</Text>
|
||||
|
||||
|
||||
|
||||
>>>>>>> Enei/master
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
@ -111,11 +220,18 @@ function mapStateToProps(state, props) {
|
|||
|
||||
return {
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
token: state.apiReducer.token,
|
||||
user: state.apiReducer.user
|
||||
|
||||
|
||||
=======
|
||||
token: state.apiReducer.token,
|
||||
user: state.apiReducer.user,
|
||||
logged: state.apiReducer.logged
|
||||
|
||||
>>>>>>> Enei/master
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@ export default class Login extends Component {
|
|||
|
||||
render() {
|
||||
|
||||
|
||||
deviceStorage.isLogged().then(a=>{
|
||||
console.log(a);
|
||||
|
||||
|
|
|
@ -3,6 +3,10 @@ import { View, Image, Vibration, Dimensions,Text ,Button ,TouchableOpacity } fro
|
|||
import QRCodeScanner from 'react-native-qrcode-scanner';
|
||||
import {UtilStyles} from '../assets/styles'
|
||||
import CodeInput from 'react-native-confirmation-code-input';
|
||||
|
||||
import Modal from "react-native-modal";
|
||||
|
||||
|
||||
import {RkButton,
|
||||
RkTheme , RkText} from 'react-native-ui-kitten';
|
||||
|
||||
|
@ -12,19 +16,28 @@ import {RkButton,
|
|||
|
||||
export default class Scan extends React.Component {
|
||||
|
||||
_toggleModal = () =>
|
||||
this.setState({ isModalVisible: !this.state.isModalVisible });
|
||||
|
||||
_activate=()=>{
|
||||
|
||||
this.setState({ isModalVisible: !this.state.isModalVisible ,reactivate:true});
|
||||
this.scanner.reactivate();
|
||||
}
|
||||
|
||||
onSuccess = (e) => {
|
||||
|
||||
// console.log(e.data);
|
||||
|
||||
|
||||
console.log(e.data);
|
||||
|
||||
|
||||
|
||||
this.setState({ isModalVisible: !this.state.isModalVisible ,isActive:false});
|
||||
this.setState({code:e.data});
|
||||
};
|
||||
|
||||
state = {
|
||||
isRender: true
|
||||
isActive:true,
|
||||
isRender: true,
|
||||
reactivate:false,
|
||||
isModalVisible: false,
|
||||
code:''
|
||||
|
||||
}
|
||||
componentDidMount() {
|
||||
this.props.navigation.addListener('willFocus', (route) => {
|
||||
|
@ -34,15 +47,64 @@ export default class Scan extends React.Component {
|
|||
this.setState({ isRender: false })
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
{
|
||||
|
||||
return (
|
||||
|
||||
<View style={{flex: 1}}>
|
||||
<Text> Camera Loading....</Text>
|
||||
{ this.state.isRender &&
|
||||
<QRCodeScanner />
|
||||
|
||||
{ this.state.isRender &&
|
||||
|
||||
<QRCodeScanner
|
||||
showMarker
|
||||
ref={(node) => { this.scanner = node }}
|
||||
reactivate={false}
|
||||
|
||||
onRead={this.onSuccess.bind(this)}
|
||||
|
||||
showMarker={true}
|
||||
|
||||
cameraStyle={{ height: SCREEN_HEIGHT }}
|
||||
|
||||
fadeIn={true}
|
||||
|
||||
customMarker={
|
||||
|
||||
<View style={{ flex: 1 }}>
|
||||
|
||||
<Modal isVisible={this.state.isModalVisible} style={{backgroundColor:'#E8E8E8', borderRadius:30, height:100}}>
|
||||
<View style={{ flex: 1 }}>
|
||||
<Text></Text>
|
||||
<Text> Qr code data: {this.state.code}</Text>
|
||||
<Button onPress={this._activate} title="Close" color="#841584" accessibilityLabel="Learn more about this purple button"/>
|
||||
|
||||
</View>
|
||||
</Modal>
|
||||
</View>
|
||||
}
|
||||
/>
|
||||
}
|
||||
</View>
|
||||
);
|
||||
)}
|
||||
|
||||
return (
|
||||
<View style={{ flex: 1 }}>
|
||||
<TouchableOpacity onPress={this._toggleModal}>
|
||||
<Text>Show Modal</Text>
|
||||
</TouchableOpacity>
|
||||
<Modal isVisible={this.state.isModalVisible}>
|
||||
<View style={{ flex: 1 }}>
|
||||
<Text>Hello!</Text>
|
||||
<TouchableOpacity onPress={this._toggleModal}>
|
||||
<Text>Hide me!</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
</Modal>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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,13 +36,28 @@
|
|||
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 */; };
|
||||
43A080C42246430685BC7859 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A55A26724384416FAF74A98D /* Ionicons.ttf */; };
|
||||
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
|
||||
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
|
||||
BE2BDF992200F95B0001B8A8 /* libRNCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE2BDF982200F9490001B8A8 /* libRNCamera.a */; };
|
||||
BE2BDF9A2200F96A0001B8A8 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE2BDF922200F93B0001B8A8 /* libRNGestureHandler.a */; };
|
||||
BE2BDFA12200F9880001B8A8 /* libReactNativePermissions.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE2BDFA02200F9830001B8A8 /* libReactNativePermissions.a */; };
|
||||
BE2BDFE2220101420001B8A8 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE2BDFDF2201012E0001B8A8 /* libRNVectorIcons.a */; };
|
||||
43A080C42246430685BC7859 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A55A26724384416FAF74A98D /* Ionicons.ttf */; };
|
||||
BEA7C1C022034BC800B47CD7 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B122034BC800B47CD7 /* MaterialIcons.ttf */; };
|
||||
BEA7C1C122034BC800B47CD7 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B222034BC800B47CD7 /* FontAwesome.ttf */; };
|
||||
BEA7C1C222034BC800B47CD7 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B322034BC800B47CD7 /* Ionicons.ttf */; };
|
||||
BEA7C1C322034BC800B47CD7 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B422034BC800B47CD7 /* FontAwesome5_Brands.ttf */; };
|
||||
BEA7C1C422034BC800B47CD7 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B522034BC800B47CD7 /* SimpleLineIcons.ttf */; };
|
||||
BEA7C1C522034BC800B47CD7 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B622034BC800B47CD7 /* Entypo.ttf */; };
|
||||
BEA7C1C622034BC800B47CD7 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B722034BC800B47CD7 /* MaterialCommunityIcons.ttf */; };
|
||||
BEA7C1C722034BC800B47CD7 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B822034BC800B47CD7 /* Zocial.ttf */; };
|
||||
BEA7C1C822034BC800B47CD7 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B922034BC800B47CD7 /* Feather.ttf */; };
|
||||
BEA7C1C922034BC800B47CD7 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BA22034BC800B47CD7 /* FontAwesome5_Regular.ttf */; };
|
||||
BEA7C1CA22034BC800B47CD7 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BB22034BC800B47CD7 /* FontAwesome5_Solid.ttf */; };
|
||||
BEA7C1CB22034BC800B47CD7 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BC22034BC800B47CD7 /* AntDesign.ttf */; };
|
||||
BEA7C1CC22034BC800B47CD7 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BD22034BC800B47CD7 /* Foundation.ttf */; };
|
||||
BEA7C1CD22034BC800B47CD7 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BE22034BC800B47CD7 /* EvilIcons.ttf */; };
|
||||
BEA7C1CE22034BC800B47CD7 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1BF22034BC800B47CD7 /* Octicons.ttf */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
@ -381,12 +397,27 @@
|
|||
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; 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>"; };
|
||||
A55A26724384416FAF74A98D /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-ionicons/fonts/Ionicons.ttf"; sourceTree = "<group>"; };
|
||||
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
|
||||
BE2BDF682200F93B0001B8A8 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = "<group>"; };
|
||||
BE2BDF932200F9490001B8A8 /* RNCamera.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RNCamera.xcodeproj"; sourceTree = "<group>"; };
|
||||
BE2BDF9B2200F9830001B8A8 /* ReactNativePermissions.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativePermissions.xcodeproj; path = "../node_modules/react-native-permissions/ios/ReactNativePermissions.xcodeproj"; sourceTree = "<group>"; };
|
||||
BE2BDFD92201012E0001B8A8 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
|
||||
A55A26724384416FAF74A98D /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/react-native-ionicons/fonts/Ionicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
BEA7C1B122034BC800B47CD7 /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B222034BC800B47CD7 /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B322034BC800B47CD7 /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B422034BC800B47CD7 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B522034BC800B47CD7 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B622034BC800B47CD7 /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B722034BC800B47CD7 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B822034BC800B47CD7 /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1B922034BC800B47CD7 /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BA22034BC800B47CD7 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BB22034BC800B47CD7 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BC22034BC800B47CD7 /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BD22034BC800B47CD7 /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BE22034BC800B47CD7 /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
|
||||
BEA7C1BF22034BC800B47CD7 /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -580,6 +611,29 @@
|
|||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
624432DF59944E72B6023C91 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BEA7C1BC22034BC800B47CD7 /* AntDesign.ttf */,
|
||||
BEA7C1B622034BC800B47CD7 /* Entypo.ttf */,
|
||||
BEA7C1BE22034BC800B47CD7 /* EvilIcons.ttf */,
|
||||
BEA7C1B922034BC800B47CD7 /* Feather.ttf */,
|
||||
BEA7C1B222034BC800B47CD7 /* FontAwesome.ttf */,
|
||||
BEA7C1B422034BC800B47CD7 /* FontAwesome5_Brands.ttf */,
|
||||
BEA7C1BA22034BC800B47CD7 /* FontAwesome5_Regular.ttf */,
|
||||
BEA7C1BB22034BC800B47CD7 /* FontAwesome5_Solid.ttf */,
|
||||
BEA7C1BD22034BC800B47CD7 /* Foundation.ttf */,
|
||||
BEA7C1B322034BC800B47CD7 /* Ionicons.ttf */,
|
||||
BEA7C1B722034BC800B47CD7 /* MaterialCommunityIcons.ttf */,
|
||||
BEA7C1B122034BC800B47CD7 /* MaterialIcons.ttf */,
|
||||
BEA7C1BF22034BC800B47CD7 /* Octicons.ttf */,
|
||||
BEA7C1B522034BC800B47CD7 /* SimpleLineIcons.ttf */,
|
||||
BEA7C1B822034BC800B47CD7 /* Zocial.ttf */,
|
||||
A55A26724384416FAF74A98D /* Ionicons.ttf */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
78C398B11ACF4ADC00677621 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -689,15 +743,6 @@
|
|||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
624432DF59944E72B6023C91 /* Resources */ = {
|
||||
isa = "PBXGroup";
|
||||
children = (
|
||||
A55A26724384416FAF74A98D /* Ionicons.ttf */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
path = "";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
|
@ -1197,8 +1242,23 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BEA7C1C022034BC800B47CD7 /* MaterialIcons.ttf in Resources */,
|
||||
BEA7C1CC22034BC800B47CD7 /* Foundation.ttf in Resources */,
|
||||
BEA7C1C122034BC800B47CD7 /* FontAwesome.ttf in Resources */,
|
||||
BEA7C1C922034BC800B47CD7 /* FontAwesome5_Regular.ttf in Resources */,
|
||||
BEA7C1C822034BC800B47CD7 /* Feather.ttf in Resources */,
|
||||
BEA7C1C222034BC800B47CD7 /* Ionicons.ttf in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||
BEA7C1CA22034BC800B47CD7 /* FontAwesome5_Solid.ttf in Resources */,
|
||||
BEA7C1C422034BC800B47CD7 /* SimpleLineIcons.ttf in Resources */,
|
||||
BEA7C1CE22034BC800B47CD7 /* Octicons.ttf in Resources */,
|
||||
BEA7C1CB22034BC800B47CD7 /* AntDesign.ttf in Resources */,
|
||||
BEA7C1CD22034BC800B47CD7 /* EvilIcons.ttf in Resources */,
|
||||
BEA7C1C722034BC800B47CD7 /* Zocial.ttf in Resources */,
|
||||
BEA7C1C622034BC800B47CD7 /* MaterialCommunityIcons.ttf in Resources */,
|
||||
BEA7C1C322034BC800B47CD7 /* FontAwesome5_Brands.ttf in Resources */,
|
||||
BEA7C1C522034BC800B47CD7 /* Entypo.ttf in Resources */,
|
||||
43A080C42246430685BC7859 /* Ionicons.ttf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
|
|
@ -39,6 +39,15 @@
|
|||
<string>$(PRODUCT_NAME) camera use</string>
|
||||
<key>Privacy - Camera Usage Description</key>
|
||||
<string>$(PRODUCT_NAME) camera use</string>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>Foundation.ttf</string>
|
||||
<string>Ionicons.ttf</string>
|
||||
<string>FontAwesome.ttf</string>
|
||||
<string>FontAwesome5_Solid.ttf</string>
|
||||
</array>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string></string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
|
@ -53,9 +62,5 @@
|
|||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>Ionicons.ttf</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -2971,13 +2971,11 @@
|
|||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -2990,18 +2988,15 @@
|
|||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
|
@ -3104,8 +3099,7 @@
|
|||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
|
@ -3115,7 +3109,6 @@
|
|||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
|
@ -3128,20 +3121,17 @@
|
|||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.2.4",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.1",
|
||||
"yallist": "^3.0.0"
|
||||
|
@ -3158,7 +3148,6 @@
|
|||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
|
@ -3231,8 +3220,7 @@
|
|||
},
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
"bundled": true
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
|
@ -3242,7 +3230,6 @@
|
|||
"once": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -3348,7 +3335,6 @@
|
|||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
|
@ -5623,6 +5609,45 @@
|
|||
"object-visit": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"material-icons-react": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/material-icons-react/-/material-icons-react-1.0.4.tgz",
|
||||
"integrity": "sha512-ZTCD0Nl+/hTyvONWz8N6gCrpLWfbkOF77NWbD9ThYdkBK8gtvFMc/ORS8nfU0qlmS1wNdVXf1oTaBRWLCiNkxw==",
|
||||
"requires": {
|
||||
"prop-types": "^15.6.1",
|
||||
"react": "^15.0.0",
|
||||
"react-dom": "^15.0.0",
|
||||
"webfontloader": "^1.6.28"
|
||||
},
|
||||
"dependencies": {
|
||||
"fbjs": {
|
||||
"version": "0.8.17",
|
||||
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
|
||||
"integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
|
||||
"requires": {
|
||||
"core-js": "^1.0.0",
|
||||
"isomorphic-fetch": "^2.1.1",
|
||||
"loose-envify": "^1.0.0",
|
||||
"object-assign": "^4.1.0",
|
||||
"promise": "^7.1.1",
|
||||
"setimmediate": "^1.0.5",
|
||||
"ua-parser-js": "^0.7.18"
|
||||
}
|
||||
},
|
||||
"react": {
|
||||
"version": "15.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
|
||||
"integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=",
|
||||
"requires": {
|
||||
"create-react-class": "^15.6.0",
|
||||
"fbjs": "^0.8.9",
|
||||
"loose-envify": "^1.1.0",
|
||||
"object-assign": "^4.1.0",
|
||||
"prop-types": "^15.5.10"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"math-random": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
|
||||
|
@ -6767,6 +6792,33 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"react-dom": {
|
||||
"version": "15.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz",
|
||||
"integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=",
|
||||
"requires": {
|
||||
"fbjs": "^0.8.9",
|
||||
"loose-envify": "^1.1.0",
|
||||
"object-assign": "^4.1.0",
|
||||
"prop-types": "^15.5.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"fbjs": {
|
||||
"version": "0.8.17",
|
||||
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
|
||||
"integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
|
||||
"requires": {
|
||||
"core-js": "^1.0.0",
|
||||
"isomorphic-fetch": "^2.1.1",
|
||||
"loose-envify": "^1.0.0",
|
||||
"object-assign": "^4.1.0",
|
||||
"promise": "^7.1.1",
|
||||
"setimmediate": "^1.0.5",
|
||||
"ua-parser-js": "^0.7.18"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"react-is": {
|
||||
"version": "16.7.0",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.7.0.tgz",
|
||||
|
@ -6836,6 +6888,14 @@
|
|||
"yargs": "^9.0.0"
|
||||
}
|
||||
},
|
||||
"react-native-animatable": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.1.tgz",
|
||||
"integrity": "sha512-NoE6OAgCrhggWBRV6rBJup5vLAGoTjx168Tku1RZmjUGIdYRAyGesP/MoqvxiNJjhTAgwYx2LT63VTT1xO8g4Q==",
|
||||
"requires": {
|
||||
"prop-types": "^15.5.10"
|
||||
}
|
||||
},
|
||||
"react-native-app-intro-slider": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-app-intro-slider/-/react-native-app-intro-slider-1.0.1.tgz",
|
||||
|
@ -6899,11 +6959,28 @@
|
|||
"resolved": "https://registry.npmjs.org/react-native-loader/-/react-native-loader-1.2.1.tgz",
|
||||
"integrity": "sha1-4IWJqJz80HZZW5MBwdYY9U2nMyk="
|
||||
},
|
||||
"react-native-modal": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-7.0.2.tgz",
|
||||
"integrity": "sha512-IRTDeErr4asDdPs4DGbaKvz3fgr56tcVA7nAdCLu4IkjNw7DaIlAbQelg0Sdirb+8+RbIDPyrrnuEH84Fnj4ZA==",
|
||||
"requires": {
|
||||
"prop-types": "^15.6.1",
|
||||
"react-native-animatable": "^1.2.4"
|
||||
}
|
||||
},
|
||||
"react-native-permissions": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-1.1.1.tgz",
|
||||
"integrity": "sha512-t0Ujm177bagjUOSzhpmkSz+LqFW04HnY9TeZFavDCmV521fQvFz82aD+POXqWsAdsJVOK3umJYBNNqCjC3g0hQ=="
|
||||
},
|
||||
"react-native-progress": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-native-progress/-/react-native-progress-3.5.0.tgz",
|
||||
"integrity": "sha512-Tgc002D0BGes1fTlObu/qNItlsTPYKFrF9XRQaJLme77TNxNX9I04sgIz3kaq8O4R+z/jlai64dk1HDEDQhzMA==",
|
||||
"requires": {
|
||||
"prop-types": "^15.5.8"
|
||||
}
|
||||
},
|
||||
"react-native-qrcode-scanner": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native-qrcode-scanner/-/react-native-qrcode-scanner-1.1.2.tgz",
|
||||
|
@ -6955,6 +7032,16 @@
|
|||
"prop-types": "^15.6.1"
|
||||
}
|
||||
},
|
||||
"react-native-timeline-feed": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-timeline-feed/-/react-native-timeline-feed-1.0.1.tgz",
|
||||
"integrity": "sha512-M5027tP7lb48calaWZOZ8E0SAttU5sPaLoDOC4w3bYiWmUqlbh47awrBeGKwyOeE8ggy+j+KXrtCyA65HQzlxA=="
|
||||
},
|
||||
"react-native-timeline-listview": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/react-native-timeline-listview/-/react-native-timeline-listview-0.2.3.tgz",
|
||||
"integrity": "sha1-5Gt/D9LCIGMp7uYZR5XgOJmv6II="
|
||||
},
|
||||
"react-native-ui-kitten": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native-ui-kitten/-/react-native-ui-kitten-3.1.2.tgz",
|
||||
|
@ -8820,6 +8907,11 @@
|
|||
"minimist": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"webfontloader": {
|
||||
"version": "1.6.28",
|
||||
"resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz",
|
||||
"integrity": "sha1-23hhKSU8tujq5UwvsF+HCvZnW64="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
|
||||
|
|
|
@ -8,7 +8,11 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.18.0",
|
||||
<<<<<<< HEAD
|
||||
"prop-types": "^15.6.2",
|
||||
=======
|
||||
"material-icons-react": "^1.0.4",
|
||||
>>>>>>> Enei/master
|
||||
"react": "16.6.3",
|
||||
"react-native": "0.57.8",
|
||||
"react-native-app-intro-slider": "^1.0.1",
|
||||
|
@ -18,7 +22,11 @@
|
|||
"react-native-gesture-handler": "^1.0.15",
|
||||
"react-native-ionicons": "^4.5.5",
|
||||
"react-native-loader": "^1.2.1",
|
||||
"react-native-modal": "^7.0.2",
|
||||
"react-native-progress": "^3.5.0",
|
||||
"react-native-qrcode-scanner": "^1.1.2",
|
||||
"react-native-timeline-feed": "^1.0.1",
|
||||
"react-native-timeline-listview": "^0.2.3",
|
||||
"react-native-ui-kitten": "^3.1.2",
|
||||
"react-native-vector-icons": "^6.1.0",
|
||||
"react-navigation": "^3.0.9",
|
||||
|
|
Loading…
Reference in New Issue