Merge remote-tracking branch 'origin/master' into zmiguel

This commit is contained in:
José Valdiviesso 2019-02-23 17:23:40 +00:00
commit 478a27a39f
144 changed files with 12207 additions and 3131 deletions

View File

@ -149,6 +149,8 @@ android {
}
dependencies {
compile project(':react-native-material-shadows')
compile project(':react-native-linear-gradient')
compile project(':react-native-camera')
compile project(':react-native-vector-icons')
compile project(':react-native-gesture-handler')

0
App/android/app/src/main/assets/fonts/AntDesign.ttf Executable file → Normal file
View File

0
App/android/app/src/main/assets/fonts/Entypo.ttf Executable file → Normal file
View File

0
App/android/app/src/main/assets/fonts/EvilIcons.ttf Executable file → Normal file
View File

0
App/android/app/src/main/assets/fonts/FontAwesome.ttf Executable file → Normal file
View File

View File

View File

View File

0
App/android/app/src/main/assets/fonts/Foundation.ttf Executable file → Normal file
View File

View File

View File

0
App/android/app/src/main/assets/fonts/Octicons.ttf Executable file → Normal file
View File

View File

0
App/android/app/src/main/assets/fonts/Zocial.ttf Executable file → Normal file
View File

View File

@ -3,6 +3,8 @@ package com.app;
import android.app.Application;
import com.facebook.react.ReactApplication;
import ui.materialshadows.RNMaterialShadowsPackage;
import com.BV.LinearGradient.LinearGradientPackage;
import org.reactnative.camera.RNCameraPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
@ -26,6 +28,8 @@ public class MainApplication extends Application implements ReactApplication {
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNMaterialShadowsPackage(),
new LinearGradientPackage(),
new RNCameraPackage(),
new VectorIconsPackage(),
new RNGestureHandlerPackage()

View File

@ -3,7 +3,7 @@
buildscript {
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 16
minSdkVersion = 21
compileSdkVersion = 27
targetSdkVersion = 26
supportLibVersion = "27.1.1"

View File

@ -22,4 +22,4 @@ android.enableAapt2=false
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=aspire98H
MYAPP_RELEASE_KEY_PASSWORD=encontroINFORMATICA2019
MYAPP_RELEASE_KEY_PASSWORD=aspire98H

View File

@ -1,4 +1,8 @@
rootProject.name = 'app'
include ':react-native-material-shadows'
project(':react-native-material-shadows').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-material-shadows/android')
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')
include ':react-native-camera'
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
include ':react-native-vector-icons'

View File

@ -10,7 +10,13 @@ import {
ActivityIndicator,
Button,
TouchableHighlight,
Keyboard
Keyboard,
ImageBackground,
LinearGradient,
TouchableOpacity,
TextInput,
NetInfo,
Animated
} from 'react-native';
@ -20,7 +26,7 @@ import {connect} from 'react-redux';
import QRCodeScanner from 'react-native-qrcode-scanner';
import {UtilStyles} from './assets/styles'
import * as Actions from './store/actions'; //Import your actions
import * as Actions from './store/actions';
import {RkButton, RkTheme, RkText, RkTextInput} from 'react-native-ui-kitten';
@ -33,7 +39,11 @@ import Icon from "react-native-vector-icons/Ionicons"
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import Swiper from 'react-native-swiper';
function handleConnectivityChange() {
console.log("asdasd");
}
class App extends Component {
_activate=()=>{
@ -42,12 +52,16 @@ class App extends Component {
this.scanner.reactivate();
}
_scanQr=()=>{
this.props.openScannerLogin()
console.log(this.props.UI_loginScannerActive)
}
_tryLogin=()=>{
console.log(this.state.text)
this.scanner.reactivate();
//console.log(this.state.text)
//this.scanner.reactivate();
this.props.login(this.state.username, this.state.text);
}
@ -67,9 +81,10 @@ class App extends Component {
logged: false,
isModalVisible: false,
state : {text: ''},
username:'',
username:'QR code',
failedAttempt: false,
push:4
push:4,
UI_loginScannerActive:false
};
@ -81,7 +96,15 @@ class App extends Component {
checkValue=(e)=>{
console.log("check"+e)
}
_handleConnectionChange = (isConnected) => {
this.props.connectionState(true);
};
componentDidMount() {
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
this.setState({isModalVisible: false})
//verifica se o utilizador tem token guardado
this.props.checkUser();
@ -90,6 +113,10 @@ class App extends Component {
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
}
_keyboardDidShow () {
//alert('Keyboard Shown');
// this.setState({push:0})
@ -103,141 +130,155 @@ class App extends Component {
}
onSuccess = (e) => {
this.setState({ isModalVisible: !this.state.isModalVisible });
// this.setState({ isModalVisible: !this.state.isModalVisible });
// this.props.login(e.data, 'f8908cc0');
this.props.closeLoginQRScan();
this.setState({username:e.data})
console.log("tentativa de login");
console.log("QR code lido");
};
render() {
if (this.props.onHold && !this.props.logged) {
if (!this.props.logged) {
return (
<View style={UtilStyles.containerLoading}>
<Text>CARREGANDO {this.props.onHold}</Text>
<ActivityIndicator size="large" color="#0000ff"/>
<ActivityIndicator size="large" color="red"/>
</View>
)
}
else
{
//console.log('token... '+ this.props.logged)
// console.log('token... '+ this.props.logged)
//se existir token
if (this.props.logged) {
if (this.props.logged ) {
return (
<Router></Router>
)
}
else {
return (
<View style={styles.slide2}>
<Modal isVisible={this.props.UI_loginScannerActive}>
<View style={{ flex: 1 , backgroundColor:'white'}}>
<Button onPress={this.props.closeLoginQRScan} title={"Fechar scanner"}> </Button>
<QRCodeScanner
onRead={this.onSuccess}
cameraStyle={ styles.cameraContainer}
/>
</View>
</Modal>
<View style={{ width:'100%',
justifyContent: 'center',
alignItems: 'center',}}>
<Image style={styles.logo2} source={require('./assets/img/logo2.png')}/>
</View>
<View styles={styles.loginContainer}>
//se não existir vai para o ecrã de scan QR
return (
<QRCodeScanner
ref={(node) => { this.scanner = node }}
showMarker
<View style={styles.inputSection}>
<TextInput
style={styles.input}
placeholder={this.state.username}
onChangeText={(searchString) => {this.setState({searchString})}}
maxLength={15}
underlineColorAndroid="transparent"
/>
<TouchableOpacity onPress={this._scanQr}>
<View style={styles.scanQR}>
<Icon style={styles.searchIcon} name="ios-qr-scanner" size={30} color="#000"/>
<Text>Scan QR</Text>
</View>
</TouchableOpacity>
</View>
onRead={this.onSuccess.bind(this)}
cameraStyle={{height: SCREEN_HEIGHT}}
<TextInput style={styles.passwordInput}
onFocus={this._print}
maxLength={10}
blurOnSubmit ={true}
secureTextEntry={true}
onChangeText={(text) => this.setState({text})}
clearButtonMode='always'
value={this.state.text}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
placeholder='Password' />
<RkButton rkType='dark' style={styles.loginBtn} onPress={this._tryLogin}>Entrar</RkButton>
customMarker={
<View style={styles.rectangleContainer}>
<Modal
isVisible={this.state.isModalVisible}
style={
{
backgroundColor:'#E8E8E8',
borderRadius:10,
marginTop:SCREEN_HEIGHT /this.state.push,
height:SCREEN_HEIGHT/2
}
}
animationInTiming={1000}
animationOutTiming={1000}
>
<View style={{ flex: 1}}>
<Text></Text>
<Text> Introduza a password</Text>
<RkTextInput
onFocus={this._print}
maxLength={10}
blurOnSubmit ={true}
secureTextEntry={true}
rkType='rounded'
onChangeText={(text) => this.setState({text})}
clearButtonMode='always'
value={this.state.text}
clearTextOnFocus={true}
onSubmitEditing={Keyboard.dismiss}
/>
<Button onPress={this._tryLogin} title="Login" color="#841584" />
{ this.props.failedAttempt &&
<Text> Password ou QR incorrecto</Text>
}
<Text></Text>
<Button onPress={this._activate} title="Scan again!" color="green" accessibilityLabel="Learn more about this purple button"/>
</View>
</Modal>
<View style={styles.logo}>
<Image style={UtilStyles.loginImage}
source={require('./assets/img/logo.png')}
/>
</View>
<View style={{flexDirection: "row"}}>
<View style={styles.leftAndRightOverlay}>
</View>
<View style={styles.rectangle}>
</View>
<View style={styles.leftAndRightOverlay}>
</View>
</View>
<View style={styles.bottomOverlay}>
<View style={{flex: 1, alignItems: 'center', alignContent: 'center'}}>
<RkText rkType='primary' style={styles.recover}>Recuperar pin de acesso</RkText>
<RkButton rkType='dark' style={styles.manual}>lols</RkButton>
</View>
</View>
</View>
}
/>
)
}
</View>
<View style={ styles.buttons }>
<TouchableOpacity
style={styles.button}>
<Icon name="logo-facebook" size={40}/>
</TouchableOpacity>
<TouchableOpacity
style={styles.button}>
<Icon name="logo-instagram" size={40}/>
</TouchableOpacity>
<TouchableOpacity
style={styles.button}>
<Icon name="md-heart" size={40}/>
</TouchableOpacity>
</View>
<View style={styles.footer}>
<View style={styles.textRow}>
<RkText rkType='primary3'>Não sabes a password?</RkText>
<RkButton rkType='clear' onPress={this.onSignUpButtonPressed}>
<TouchableOpacity>
<RkText style={{color:'red'}} kType='header6'>Recuperar Password</RkText>
</TouchableOpacity>
</RkButton>
</View>
</View>
</View>
);
}
}
}
@ -258,7 +299,162 @@ const rectDimensions = SCREEN_WIDTH * 0.85; // this is equivalent to 255 from a
const overlayColor = 'rgba(0,0,0,0.30)';
const styles = {
cameraContainer:{
// height: Dimensions.get('window').height ,
},
passwordInput:{
borderRadius: 90,
borderColor:'#bfbdbd',
borderWidth: 1,
marginTop:20,
marginBottom:20,
width:SCREEN_WIDTH*0.8,
backgroundColor: 'white',
borderRadius: 90,
height: SCREEN_HEIGHT*0.08,
borderColor:'#bfbdbd',
borderWidth: 1,
paddingLeft:SCREEN_WIDTH*0.05,
},
scanQRText:{
paddingTop:50
// paddingTop:20,
},
scanQR:{
//flexDirection: 'row',
paddingTop:5,
backgroundColor:10,
width:80,
paddingLeft:10,
backgroundColor:'#f24b4b',
borderBottomRightRadius:90,
borderTopRightRadius:90,
height:'100%',
},
inputSection: {
flexDirection: 'row',
backgroundColor: '#fff',
backgroundColor: 'white',
borderRadius: 90,
height: SCREEN_HEIGHT*0.08,
borderColor:'#bfbdbd',
borderWidth: 1,
},
searchIcon: {
paddingLeft:10
},
input: {
flex: 1,
paddingRight: 10,
paddingLeft: 0,
paddingLeft:SCREEN_WIDTH*0.05,
color: '#424242',
},
textRow:{
marginBottom:40
},
loginContainer:{
width: '100%',
height: '30%',
justifyContent: 'center',
alignItems: 'center'
},
loginBtn:{
marginTop:10,
marginBottom:20,
marginLeft: '25%',
},
button: {
borderWidth:1,
borderColor:'rgba(0,0,0,0.2)',
alignItems:'center',
justifyContent:'center',
width:60,
height:60,
backgroundColor:'#fff',
borderRadius:100,
marginRight: 10,
marginLeft:10
},
footer: {},
buttons: {
flexDirection: 'row',
marginBottom: 24,
marginHorizontal: 24,
marginTop:24,
justifyContent: 'space-around',
},
logoContainer:{
width:'100%',
justifyContent: 'center',
alignItems: 'center',
marginTop:200
},
logo2:{
// flex: 1,
// resizeMode: 'contain',
width: 200, height: 200,
},
wrapper: {
},
slide1: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
slide2: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
slide3: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
color:'black',
backgroundColor: 'white',
},
text: {
color: '#fff',
fontSize: 30,
fontWeight: 'bold',
},
recover: {
paddingTop: 10,
color: "red",
@ -334,6 +530,7 @@ mapStateToProps = (state, props) => {
onHold: state.apiReducer.onHold,
logged: state.apiReducer.logged,
failedAttempt:state.apiReducer.failedAttempt,
UI_loginScannerActive: state.uiReducer.UI_loginScannerActive
}
};

View File

@ -1,5 +1,9 @@
import React from 'react';
import {TouchableOpacity} from 'react-native';
import {
TouchableOpacity,
Text,
View
} from 'react-native';
import {
createStackNavigator,
createAppContainer,
@ -26,21 +30,24 @@ import Icon from "react-native-vector-icons/Ionicons"
import IconF from "react-native-vector-icons/Foundation"
import IconFA from "react-native-vector-icons/FontAwesome5"
import Profile from "./screens/Profile";
import editCalendar from './screens/editCalendar';
import choosePath from './screens/choosePath';
import calendarDetail from './screens/calendarDetail';
const AppStack = createBottomTabNavigator(
{
Home: {
screen: Home,
Calendar: {
screen: Calendar,
navigationOptions: {
tabBarIcon: ({tintColor}) => (
<Icon name="md-home" color={tintColor} size={30}/>
<IconF name="calendar" color={tintColor} size={30}/>
)
},
},
Social: {
screen: Social,
@ -57,23 +64,13 @@ const AppStack = createBottomTabNavigator(
navigationOptions: {
tabBarIcon: ({tintColor}) => (
<Icon name="ios-qr-scanner" color={tintColor} size={45}/>
<Icon name="ios-qr-scanner" color={tintColor} size={30}/>
),
},
},
Calendar: {
screen: Calendar,
navigationOptions: {
tabBarIcon: ({tintColor}) => (
<IconF name="calendar" color={tintColor} size={30}/>
)
},
},
Eventos: {
Eventos: {
screen: Eventos,
navigationOptions: {
@ -83,6 +80,17 @@ const AppStack = createBottomTabNavigator(
)
},
},
Home: {
screen: Home,
navigationOptions: {
tabBarIcon: ({tintColor}) => (
<Icon name="ios-person" color={tintColor} size={30}/>
)
},
},
},
@ -90,8 +98,8 @@ const AppStack = createBottomTabNavigator(
initialRouteName: 'Home',
tabBarOptions: {
showLabel: false, // hide labels
activeTintColor: '#858683', // active icon color
showLabel: true, // hide labels
activeTintColor: '#CC1A17', // active icon color
inactiveTintColor: '#d8d6c9', // inactive icon color
style: {
backgroundColor: '#fff' // TabBar background
@ -106,16 +114,39 @@ const Stack = createStackNavigator({
navigationOptions: ({navigation}) => {
const index = navigation.state.index;
if (navigation.state.routes[index].routeName !== 'Scan') {
if (navigation.state.routes[index].routeName == 'Home') {
return {
headerTitle: `${navigation.state.routes[index].routeName}`,
headerRight: (
<TouchableOpacity style={{marginRight: 20}} onPress={() => navigation.navigate('Profile')}>
<TouchableOpacity style={{marginRight: 20, flex:1, flexDirection:'row'}} onPress={() => navigation.navigate('Profile')}>
<Text>editar</Text>
<IconFA name="user-edit" size={22}/>
</TouchableOpacity>
)
}
} else {
}
else if(navigation.state.routes[index].routeName == 'Calendar'){
return {
headerTitle: 'Calendário',
headerRight: (
<View style={{flex:1, flexDirection:'row'}}>
<TouchableOpacity style={{marginRight: 20, flex:1, flexDirection:'row'}} onPress={() => navigation.navigate('Edit')}>
<Text>FAQ</Text>
</TouchableOpacity>
<TouchableOpacity style={{marginRight: 20, flex:1, flexDirection:'row'}} onPress={() => navigation.navigate('choosePath')}>
<Text>Escolher</Text>
<IconFA name="user-edit" size={22}/>
</TouchableOpacity></View>
)
}
}
else {
return {
header: null
}
@ -124,8 +155,19 @@ const Stack = createStackNavigator({
},
Profile: {
screen: Profile
},
Edit:{
screen: editCalendar
},
choosePath:{
screen: choosePath
},
calendarDetail:{
screen:calendarDetail
}
});

BIN
App/app/assets/img/bg_3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

BIN
App/app/assets/img/bg_coimbra.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -14,7 +14,7 @@ export const UtilStyles = StyleSheet.create({
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
backgroundColor: 'white',
},
titleText: {
fontSize: 20,

62
App/app/components/Email.js Executable file
View File

@ -0,0 +1,62 @@
import React from 'react'
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'
import { Icon } from 'react-native-elements'
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
justifyContent: 'flex-start',
marginBottom: 25,
marginTop: 25,
},
emailColumn: {
flexDirection: 'row',
justifyContent: 'flex-start',
marginBottom: 5,
},
emailIcon: {
color: '#CC6666',
fontSize: 30,
},
emailNameText: {
color: 'gray',
fontSize: 14,
fontWeight: '200',
},
emailRow: {
flex: 8,
flexDirection: 'column',
justifyContent: 'center',
},
emailText: {
fontSize: 16,
},
iconRow: {
flex: 2,
justifyContent: 'center',
},
});
const Email = ({ containerStyle, onPressEmail, name, email, key}) => (
<TouchableOpacity onPress={() => onPressEmail(email)}>
<View style={[styles.container, containerStyle]}>
<View style={styles.iconRow}>
<Icon
name="email"
underlayColor="transparent"
iconStyle={styles.emailIcon}
onPress={() => onPressEmail()}
/>
</View>
<View style={styles.emailRow}>
<View style={styles.emailColumn}>
<Text style={styles.emailText}>{email}</Text>
</View>
</View>
</View>
</TouchableOpacity>
)
export default Email

27
App/app/components/Separator.js Executable file
View File

@ -0,0 +1,27 @@
import React from 'react'
import { StyleSheet, View } from 'react-native'
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
},
separatorOffset: {
flex: 2,
flexDirection: 'row',
},
separator: {
flex: 8,
flexDirection: 'row',
borderColor: '#EDEDED',
borderWidth: 0.8,
},
})
const Separator = () => (
<View style={styles.container}>
<View style={styles.separatorOffset} />
<View style={styles.separator} />
</View>
)
export default Separator

91
App/app/components/Telephone.js Executable file
View File

@ -0,0 +1,91 @@
import React from 'react'
import {StyleSheet, Text, TouchableOpacity, View} from 'react-native'
import {Icon} from 'react-native-elements'
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
justifyContent: 'flex-start',
marginBottom: 25,
marginTop: 25,
},
iconRow: {
flex: 2,
justifyContent: 'center',
},
smsIcon: {
color: 'gray',
fontSize: 30,
},
smsRow: {
flex: 2,
justifyContent: 'flex-start',
},
telIcon: {
color: '#CC6666',
fontSize: 30,
},
telNameColumn: {
flexDirection: 'row',
justifyContent: 'flex-start',
},
telNameText: {
color: 'gray',
fontSize: 14,
fontWeight: '200',
},
telNumberColumn: {
flexDirection: 'row',
justifyContent: 'flex-start',
marginBottom: 5,
},
telNumberText: {
fontSize: 16,
},
telRow: {
flex: 6,
flexDirection: 'column',
justifyContent: 'center',
},
})
const Tel = ({
containerStyle,
name,
number,
onPressSms,
onPressTel,
}) => {
return (
<TouchableOpacity onPress={() => onPressTel(number)}>
<View style={[styles.container, containerStyle]}>
<View style={styles.iconRow}>
<Icon
name="call"
underlayColor="transparent"
iconStyle={styles.telIcon}
onPress={() => onPressTel(number)}
/>
</View>
<View style={styles.telRow}>
<View style={styles.telNumberColumn}>
<Text style={styles.telNumberText}>{number}</Text>
</View>
</View>
<View style={styles.smsRow}>
<Icon
name="textsms"
underlayColor="transparent"
iconStyle={styles.smsIcon}
onPress={() => onPressSms(number)}
/>
</View>
</View>
</TouchableOpacity>
)
};
export default Tel

View File

@ -0,0 +1,42 @@
import React from 'react';
import LinearGradient from 'react-native-linear-gradient';
import {
RkButton,
RkText,
RkComponent,
} from 'react-native-ui-kitten';
export class GradientButton extends RkComponent {
componentName = 'GradientButton';
typeMapping = {
button: {},
gradient: {},
text: {},
};
renderContent = (textStyle) => {
const hasText = this.props.text === undefined;
return hasText ? this.props.children : this.renderText(textStyle);
};
renderText = (textStyle) => (
<RkText style={textStyle}>{this.props.text}</RkText>
);
render() {
const { button, gradient, text: textStyle } = this.defineStyles();
const { style, rkType, ...restProps } = this.props;
const colors = this.props.colors || this.extractNonStyleValue(gradient, 'colors');
return (
<RkButton
rkType='stretch'
style={[button, style]}
{...restProps}>
<LinearGradient start={{x: 0, y: 0}} end={{x: 1, y: 0}} colors={['#4c669f', '#3b5998', '#192f6a']} style={{}}>
</LinearGradient>
</RkButton>
);
}
}

View File

@ -0,0 +1,48 @@
import { scaleVertical } from '../../utils/scale';
export const GradientButtonTypes = (theme) => ({
_base: {
button: {
alignItems: 'stretch',
paddingVertical: 0,
paddingHorizontal: 0,
height: scaleVertical(40),
borderRadius: 20,
},
gradient: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
borderRadius: 20,
colors: theme.colors.gradients.base,
},
text: {
backgroundColor: 'transparent',
color: theme.colors.text.inverse,
},
},
large: {
button: {
alignSelf: 'stretch',
height: scaleVertical(56),
borderRadius: 28,
},
gradient: {
borderRadius: 28,
},
},
statItem: {
button: {
flex: 1,
borderRadius: 5,
marginHorizontal: 10,
height: null,
alignSelf: 'auto',
},
gradient: {
flex: 1,
borderRadius: 5,
padding: 10,
},
},
});

View File

@ -1,5 +1,5 @@
import * as React from 'react';
import {View, StyleSheet, Dimensions, Image, ScrollView, Text, Button} from 'react-native';
import {View, StyleSheet, Dimensions, Image, ScrollView, Text, Button, TouchableOpacity, Animated} from 'react-native';
import {TabView, TabBar, SceneMap} from 'react-native-tab-view';
import {
RkButton, RkCard, RkText,
@ -39,14 +39,14 @@ const FourthRoute = () => (
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'},
{key: 'first', weekDay: 'sex', day:12},
{key: 'second', weekDay: 'sab',day:13},
{key: 'third', weekDay: 'dom', day:14},
{key: 'fourth', weekDay: 'seg', day:15},
],
};
@ -58,49 +58,40 @@ class Calendar extends React.Component {
console.log(this.props.events);
}
_openDetails=()=>{
console.log("los");
}
renderDetail = ({item, index}) => {
const {navigate} = this.props.navigation;
// <Image source={{ uri:item.imageUrl, width:'100%' , height:100 }} style={{borderRadius:0}}/>
return (
<TouchableOpacity onPress={() => navigate('calendarDetail', { info: item })} >
<View style={styles.event}>
<View style={styles.titleContainer}>
<Text style={[styles.title]}>{item.name}</Text>
<Text style={{color:'black'}}>Local: 1</Text>
</View>
<View>
<Text style={styles.description}>{item.description}</Text>
<View style={styles.details}>
<Progress.Bar color={'#42a5f5'} progress={0.3} unfilledColor={'white'} width={210}/>
<Progress.Bar color={'#000000'} progress={item.Enrolled/item.MaxAttendees} unfilledColor={'white'} width={210}/>
<Text>{item.Enrolled} / {item.MaxAttendees}</Text>
</View>
</View>
</View>
</TouchableOpacity>
);
}
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});
@ -108,11 +99,46 @@ class Calendar extends React.Component {
}
_renderTabBar = props => {
const inputRange = props.navigationState.routes.map((x, i) => i);
return (
<View style={styles.tabBar}>
{props.navigationState.routes.map((route, i) => {
const bgcolor = props.position.interpolate({
inputRange,
outputRange: inputRange.map(
inputIndex => (inputIndex === i ? '#CC1A17' : 'rgba(0,0,0,0)')
),
});
const color = props.position.interpolate({
inputRange,
outputRange: inputRange.map(
inputIndex => (inputIndex === i ? 'white' : 'black')
),
});
return (
<TouchableOpacity
style={styles.tabItem}
onPress={() => this.setState({ index: i })}>
<Animated.Text style={{ color :'#7A7B7B' }}>{route.weekDay}</Animated.Text>
<Animated.Text style={{ backgroundColor: bgcolor, borderRadius:90 , padding:10, marginTop:5, color:color, fontSize:15}}>{route.day}</Animated.Text>
</TouchableOpacity>
);
})}
</View>
);
};
constructor() {
super()
const archeryImgSource = require('../assets/img/archery.png');
const badmintonImgSource = require('../assets/img/badminton.png');
const lunchImgSource = require('../assets/img/lunch.png');
@ -129,40 +155,6 @@ class Calendar extends React.Component {
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'
},
]
}
@ -171,28 +163,36 @@ class Calendar extends React.Component {
const FirstRoute = () => (
<ScrollView contentContainerStyle={styles.contentContainer}>
<Button onPress={this._update} title="LOGOUT"/>
<Timeline
data={this.props.events}
timeContainerStyle={{minWidth: 52, marginTop: 5}}
timeContainerStyle={{ marginTop: 0}}
timeStyle={{
textAlign: 'center',
backgroundColor: '#ff9797',
color: 'white',
// backgroundColor: 'red',
height:100,
color:"#CC1A17",
padding: 5,
borderRadius: 13
//marginTop:10,
// fontWeight:'bold',
fontSize:23,
//borderRadius: 13
}}
descriptionStyle={{color: 'gray'}}
descriptionStyle={{color: 'red'}}
renderDetail={this.renderDetail}
lineColor='rgba(0,0,0,0)'
lineWidth={1}
separator={false}
flatListProps={{
style: {
@ -210,30 +210,38 @@ class Calendar extends React.Component {
</ScrollView>
)
const SecondRoute = () => (
<ScrollView contentContainerStyle={styles.contentContainer}>
<Timeline
data={this.props.events}
timeContainerStyle={{minWidth: 52, marginTop: 5}}
timeContainerStyle={{ marginTop: 0}}
timeStyle={{
textAlign: 'center',
backgroundColor: '#ff9797',
color: 'white',
// backgroundColor: 'red',
height:100,
color:"#CC1A17",
padding: 5,
borderRadius: 13
//marginTop:10,
// fontWeight:'bold',
fontSize:23,
//borderRadius: 13
}}
descriptionStyle={{color: 'gray'}}
descriptionStyle={{color: 'red'}}
renderDetail={this.renderDetail}
lineColor='rgba(0,0,0,0)'
lineWidth={1}
separator={false}
flatListProps={{
style: {
@ -251,8 +259,22 @@ class Calendar extends React.Component {
</ScrollView>
)
return (
return (
<View style={{flex:1}}>
<View>
<Text style={{
backgroundColor:"#CC1A17",
color:'white',
fontWeight:'bold',
fontSize:15,
textAlign:'center',
}}>
WEB DEVELOPMENT
</Text>
</View>
<TabView
navigationState={this.state}
renderScene={SceneMap({
@ -261,39 +283,84 @@ class Calendar extends React.Component {
third: ThirdRoute,
fourth: FourthRoute
})}
renderTabBar={this._renderTabBar}
useNativeDriver={true}
onIndexChange={index => this.setState({index})}
initialLayout={{width: Dimensions.get('window').width, height: Dimensions.get('window').height}}
style={{backgroundColor:"#F2F2F2"}}
indicatorStyle={{ backgroundColor: 'pink' }}
/>
</View>
);
}
}
const styles = StyleSheet.create({
tabBar: {
flexDirection: 'row',
paddingTop:0,
marginTop:0,
backgroundColor:'white',
borderWidth: 1,
borderRadius: 2,
borderColor: '#ddd',
borderBottomWidth: 0,
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.8,
shadowRadius: 2,
elevation: 2,
},
tabItem: {
flex: 1,
alignItems: 'center',
padding: 10,
},
details: {
backgroundColor: "#e0e0e0",
backgroundColor: "#FFFFFF",
borderBottomRightRadius: 10,
borderBottomLeftRadius: 10,
padding: 10
padding: 10,
paddingTop:0
},
description: {
padding: 10
padding: 10,
paddingLeft:0,
paddingTop:0
},
title: {
color: '#212121',
fontWeight: 'bold',
fontSize: 15,
},
titleContainer:{
padding: 10
},
event: {
borderRadius: 10,
backgroundColor: '#eeeeee',
borderRadius: 5,
backgroundColor: "#FFFFFF",
marginLeft:-25,
shadowColor: "#000",
shadowOffset: { width: 0, height: 2,},
shadowOpacity: 0.25,
shadowRadius: 1,
elevation: 2,
marginRight:2
},
scene: {
flex: 1,
},
contentContainer: {
paddingVertical: 20
//paddingVertical: 20,
backgroundColor:'#F2F2F2'
}
});
RkTheme.setType('RkCard', 'story', {

View File

@ -1,5 +1,10 @@
import * as React from 'react';
import { View, StyleSheet, Dimensions } from 'react-native';
import {
View,
StyleSheet,
Dimensions,
Text
} from 'react-native';
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
@ -38,17 +43,9 @@ export default class Eventos extends React.Component {
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 }}
/>
<View>
<Text>asd</Text>
</View>
);
}
}

View File

@ -1,8 +1,21 @@
import React, {Component} from 'react';
import {Button, View, Text, TouchableOpacity, FlatList, ActivityIndicator} from 'react-native';
import {
Button,
View,
Text,
TouchableOpacity,
FlatList,
ActivityIndicator,
Dimensions,
StyleSheet,
Image,
ImageBackground,
NetInfo
} from 'react-native';
import {Shadow} from 'react-native-shadow'
import Icon from "react-native-vector-icons/Ionicons"
import {
RkButton,
RkTheme
@ -14,15 +27,30 @@ import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import * as Actions from '../store/actions'; //Import your actionss
import ImageOverlay from "react-native-image-overlay";
import {createStore} from 'redux';
import PTRView from 'react-native-pull-to-refresh';
import {Provider} from 'react-redux'
import { ScrollView } from 'react-native-gesture-handler';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import {Card, Divider} from 'react-native-elements'
import RNMaterialShadows from 'react-native-material-shadows';
class Home extends Component {
_refresh() {
return new Promise((resolve) => {
setTimeout(()=>{resolve()}, 2000)
});
}
_callApi(){
this.props.getUserInfo(this.props.token);
}
constructor(props) {
super(props);
@ -34,12 +62,12 @@ class Home extends Component {
onHold: true,
user: {Name: ''}
};
}
handleConnectivityChange = () => {
console.log("asdasdasdasdasd");
}
componentDidMount() {
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
this.props.hold();
//this.props.logoutUser();
@ -56,6 +84,9 @@ class Home extends Component {
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
}
bClick() {
@ -69,45 +100,18 @@ class Home extends Component {
//var navigate = this.props.navigation.navigate
}
_logout = () => {
// this.props.navigation.navigate('scan');
// this.props.logout();
this.props.logoutUser();
}
update = () => {
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);
}
_update=()=>{
if(this.props.token!= undefined)
this.props.getUserInfo(this.props.token);
}
render() {
const {navigate} = this.props.navigation;
if (this.props.onHold) {
return (
@ -117,21 +121,96 @@ class Home extends Component {
</View>
)
}
if (this.props.logged) {
return (
<PTRView onRefresh={this._update} >
<ScrollView style={{backgroundColor:'#eeeeee'}}>
<View>
<ImageBackground
opacity={0.9}
source={require('../assets/img/bg_3.jpg')}
style={{
width: '100%',
// marginTop:150,
backgroundColor: 'rgba(255,255,255,1)' ,
}
}>
<View style={styles.homeHeader}>
<View style={styles.userImageContainer}>
<Image style={styles.userImage} source={{uri: 'https://i.imgur.com/XXJ7LxV.jpg'}}/>
</View>
<Text style={styles.userText}>{this.props.user.Name}</Text>
<Text style={styles.userTextSub}>{this.props.user.Company}</Text>
</View>
</ImageBackground>
<View style={styles.userStats}>
<Text style={styles.userStatsTitle}>O meu saldo:</Text>
<View style={styles.userStatsBox}>
<View style={styles.userBox}>
<Icon name="ios-beer" style={styles.userStatsBoxIcon} size={50}/>
<Text style={styles.userBoxText}>0 Fino(s)</Text>
</View>
<View style={styles.userBox}>
<Icon name="ios-beer" style={styles.userStatsBoxIcon} size={50}/>
<Text style={styles.userBoxText}>0 Fino(s)</Text>
</View>
<View style={styles.userBox}>
<Icon name="ios-beer" style={styles.userStatsBoxIcon} size={50}/>
<Text style={styles.userBoxText}>0 Fino(s)</Text>
</View>
</View>
</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>
<View style={styles.userBio}>
<View style={styles.userBioRow}>
<Icon name="ios-laptop" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Job}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-mail" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Email}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-phone-portrait" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Mobile}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-map" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Address}, {this.props.user.City}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-person" style={styles.userBioLogo} size={25}/>
<TouchableOpacity><Text style={styles.userCurriculum}>O meu Curriculo</Text></TouchableOpacity>
</View>
</View>
</View>
</ScrollView>
</PTRView>
);
}
else {
@ -146,24 +225,117 @@ class Home extends Component {
}
renderItem({item, index}) {
return (
<View>
<Text>
{(parseInt(index) + 1)}{". "}{item.title}
</Text>
<Text>
{item.description}
</Text>
</View>
)
}
}
const styles = StyleSheet.create({
userBoxText:{
color:'white',
fontWeight:'bold'
},
userStatsBoxIcon:{
color:'white'
},
userStatsBox:{
flex:1,
flexDirection:'row'
},
userBox:{
alignItems:'center',
justifyContent:'center',
width:'33%',
},
userCurriculum:{
paddingTop:5,
color:'red',
fontWeight:'bold',
fontSize:15
},
userBioRow:{
flex:1,
flexDirection:'row',
padding:10,
},
userBioText:{
},
userBioLogo:{
marginLeft: SCREEN_WIDTH*0.05,
width: SCREEN_WIDTH*0.15,
},
userTextSub:{
backgroundColor: 'rgba(0,0,0,0.7)' ,
color:'white',
},
userText:{
backgroundColor: 'rgba(0,0,0,0.7)' ,
color:'white',
fontWeight:'bold',
fontSize:20,
},
homeHeader:{
flex:1,
height: SCREEN_HEIGHT*0.3,
justifyContent: 'center',
alignItems:'center' ,
},
userImage:{
width:110,
height:110,
borderWidth: 1,
borderRadius: 5,
borderWidth:2,
borderColor: 'white',
},
userBio:{
flex:1,
padding:10,
margin:9,
backgroundColor:'white',
// height: SCREEN_HEIGHT*0.20,
color:'black',
borderRadius:5,
},
userStats:{
backgroundColor:'#CC1A17',
height: SCREEN_HEIGHT*0.2,
padding:10,
margin:10,
borderRadius:5,
marginTop:10,
marginBottom:0
},
userStatsTitle:{
color:'white',
fontSize:17,
fontWeight:'bold',
padding:1
},
userImageContainer:{
alignSelf: 'center',
// transform: [{ rotate: '-15deg'}],
}
});
function mapStateToProps(state, props) {
return {

View File

@ -1,5 +1,5 @@
import React, {Component} from 'react'
import {Card, Icon} from 'react-native-elements'
import {Card, Divider} from 'react-native-elements'
import {
Image,
ImageBackground,
@ -10,18 +10,28 @@ import {
StyleSheet,
Text,
View,
TouchableOpacity
TouchableOpacity,
Dimensions,
TextInput,
Button
} from 'react-native'
import PropTypes from 'prop-types';
import {connect, Provider} from "react-redux";
import {bindActionCreators} from "redux";
import * as Actions from "../store/actions";
import {createStore} from 'redux';
import Email from '../components/Email';
import Separator from '../components/Separator';
import Tel from '../components/Telephone';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import Icon from "react-native-vector-icons/Ionicons"
class Profile extends Component {
@ -34,111 +44,73 @@ class Profile extends Component {
tokenData: '',
loggedIn: false,
onHold: true,
user: {}
user: {},
cenas:{Name:'as'},
text:'',
};
}
/*
state = {
telDS: new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2,
}).cloneWithRows(this.props.tels),
emailDS: new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2,
}).cloneWithRows(this.props.emails),
};
*/
_logout = () => {
onPressPlace = () => {
console.log('place')
};
// this.props.navigation.navigate('scan');
onPressTel = number => {
Linking.openURL(`tel://${number}`).catch(err =>
console.log('Error:', err))
};
onPressSms = () => {
console.log('sms')
};
onPressEmail = email => {
Linking.openURL(`mailto:${email}-+`).catch(err =>
console.log('Error:', err)
)
};
renderHeader = () => {
/* const {
avatar,
avatarBackground,
name,
address: {city, country},
} = this.props;*/
return (
<View style={styles.header}>
<View style={styles.headerContent}>
<Image style={styles.avatar}
source={{uri: `${this.props.user.Avatar}`}}/>
<Text style={styles.name}> {this.props.user.Name} {this.props.user.LastName}</Text>
<Text style={styles.userInfo}> {this.props.user.City} </Text>
</View>
</View>
)
};
renderTel = () => {
return (
<View style={styles.telContainer}>
<TouchableOpacity onPress={() => this.onPressTel(`${this.props.user.Mobile}`)}>
<Text>{this.props.user.Mobile}</Text>
</TouchableOpacity>
</View>
)
};
/* <ListView
contentContainerStyle={styles.telContainer}
/*dataSource={this.state.telDS}
renderRow = {({id, name, number}, _, k)
=>
{
}
// this.props.logout();
this.props.logoutUser();
}
/>}*/
renderEmail = () => {
return (
<View styles={styles.emailContainer}>
<TouchableOpacity onPress={() => this.onPressEmail(`${this.props.user.Email}`)}>
<Text>{this.props.user.Email} </Text>
</TouchableOpacity>
</View>
)
/* <ListView
contentContainerStyle={styles.emailContainer}
/*dataSource={this.state.emailDS}
renderRow={({email, id, name}, _, k) => {
}}
/>*/
};
render() {
return (
<ScrollView style={styles.scroll}>
<ScrollView>
<View style={styles.container}>
{this.renderHeader()}
<View style={styles.body}>
{this.renderTel()}
{this.renderEmail()}
<View style={styles.userBio}>
<View style={styles.userBioRow}>
<Icon name="ios-laptop" style={styles.userBioLogo} size={25}/>
<TextInput
onFocus={this._print}
maxLength={50}
blurOnSubmit ={true}
onChangeText={(text) => this.setState({text})}
value={this.props.user.Job}
/>
</View>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-mail" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Email}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-phone-portrait" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Mobile}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-map" style={styles.userBioLogo} size={25}/>
<Text style={styles.userBioText}>{this.props.user.Address}, {this.props.user.City}</Text>
</View>
<Divider style={{ backgroundColor: 'black' }} />
<View style={styles.userBioRow}>
<Icon name="ios-person" style={styles.userBioLogo} size={25}/>
<TouchableOpacity><Text style={styles.userCurriculum}>O meu Curriculo</Text></TouchableOpacity>
</View>
<Button onPress={this._logout} title="LOGOUT"/>
</View>
</View>
</ScrollView>
)
}
@ -146,45 +118,27 @@ class Profile extends Component {
const styles = StyleSheet.create({
scroll: {
backgroundColor: '#FFF',
},
emailContainer: {
backgroundColor: '#FFF',
flex: 1,
paddingTop: 30,
},
telContainer: {
backgroundColor: '#FFF',
flex: 1,
paddingTop: 30,
},
container:{
header: {
backgroundColor: "#DCDCDC",
},
headerContent: {
padding: 30,
alignItems: 'center',
userBioRow:{
flex:1,
flexDirection:'row',
padding:10,
},
avatar: {
width: 130,
height: 130,
borderRadius: 63,
borderWidth: 4,
borderColor: "white",
marginBottom: 10,
userBioText:{
},
userInfo: {
fontSize: 16,
color: "#778899",
fontWeight: '600',
userBioLogo:{
marginLeft: SCREEN_WIDTH*0.05,
width: SCREEN_WIDTH*0.15,
},
});
mapStateToProps = (state, props) => {
mapStateToProps = (state, props) => {
return {

View File

@ -0,0 +1,183 @@
import * as React from 'react';
import {
View,
StyleSheet,
Dimensions,
Image,
ScrollView,
Text,
Button,
TouchableOpacity
} 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'
import * as Progress from 'react-native-progress';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import * as Actions from '../store/actions'; //Import your actionss
import Swiper from 'react-native-swiper';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import FitImage from 'react-native-fit-image';
const formatObj = (obj) => {
let a = {};
a.push({})
return a
};
class calendarDetail extends React.Component {
state = {
};
componentDidMount() {
this.props.getEvents(this.props.user);
console.log('didMount');
console.log(this.props.events);
}
_update = () => {
this.setState({user: this.props.user});
console.log(this.props.events);
}
constructor(props) {
super(props)
this.data = [
]
}
render() {
const { navigation } = this.props;
const info = navigation.getParam('info', 'error');
console.log(info);
return (
<View>
<Text>{info.name}, {info.description}</Text>
</View>
)
}
}
const styles = StyleSheet.create({
carreerPathContainer:{
backgroundColor:'#CC1A17',
height:50,
flex:1,
alignItems:'center',
justifyContent:'center',
paddingTop:15,
},
carreerPathText:{
height:50,
color:'white',
fontWeight:'bold',
fontSize:20,
},
companyHeader:{
backgroundColor:'#dddddd',
// height:150,
borderRadius:5,
margin:10,
padding:10
},
companyTitle:{
paddingBottom:5,
fontWeight:'bold',
color:'#777777',
fontSize:17,
// padding:20
},
companyLogo: {
borderRadius: 20,
},
wrapper: {
},
company:{
flex:1,
flexDirection:'row',
// backgroundColor:'red',
color:'black'
},
companyLogoContainer:{
flex:1,
justifyContent: 'center',
width:'60%',
// backgroundColor:'white',
margin:20,
},
aboutCompany:{
width:SCREEN_WIDTH,
flex:1,
justifyContent: 'center',
alignItems: '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)(calendarDetail);

View File

@ -0,0 +1,195 @@
import * as React from 'react';
import {
View,
StyleSheet,
Dimensions,
Image,
ScrollView,
Text,
Button,
TouchableOpacity
} 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'
import * as Progress from 'react-native-progress';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import * as Actions from '../store/actions'; //Import your actionss
import Swiper from 'react-native-swiper';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import FitImage from 'react-native-fit-image';
import { Dropdown } from 'react-native-material-dropdown';
const formatObj = (obj) => {
let a = {};
a.push({})
return a
};
class choosePath extends React.Component {
state = {
};
componentDidMount() {
this.props.getEvents(this.props.user);
console.log('didMount');
console.log(this.props.events);
}
_update = () => {
this.setState({user: this.props.user});
console.log(this.props.events);
}
constructor() {
super()
this.data = [
]
}
render() {
let data = [{
value: 'Desenvolvimento Web',
}, {
value: 'Inteligencia artificial',
}, {
value: 'Redes e segurança',
}];
return (
<View style={{width:SCREEN_WIDTH*0.7}}>
<Dropdown
label='Career Path'
data={data}
/>
</View>
);
}
}
const styles = StyleSheet.create({
carreerPathContainer:{
backgroundColor:'#CC1A17',
height:50,
flex:1,
alignItems:'center',
justifyContent:'center',
paddingTop:15,
},
carreerPathText:{
height:50,
color:'white',
fontWeight:'bold',
fontSize:20,
},
companyHeader:{
backgroundColor:'#dddddd',
// height:150,
borderRadius:5,
margin:10,
padding:10
},
companyTitle:{
paddingBottom:5,
fontWeight:'bold',
color:'#777777',
fontSize:17,
// padding:20
},
companyLogo: {
borderRadius: 20,
},
wrapper: {
},
company:{
flex:1,
flexDirection:'row',
// backgroundColor:'red',
color:'black'
},
companyLogoContainer:{
flex:1,
justifyContent: 'center',
width:'60%',
// backgroundColor:'white',
margin:20,
},
aboutCompany:{
width:SCREEN_WIDTH,
flex:1,
justifyContent: 'center',
alignItems: '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)(choosePath);

View File

@ -0,0 +1,160 @@
import React, {Component} from 'react'
import {Card, Divider} from 'react-native-elements'
import {
Image,
ImageBackground,
Linking,
ListView,
Platform,
ScrollView,
StyleSheet,
Text,
View,
TouchableOpacity,
Dimensions,
TextInput,
Button
} from 'react-native'
import PropTypes from 'prop-types';
import {connect, Provider} from "react-redux";
import {bindActionCreators} from "redux";
import * as Actions from "../store/actions";
import {createStore} from 'redux';
import Email from '../components/Email';
import Separator from '../components/Separator';
import Tel from '../components/Telephone';
const SCREEN_HEIGHT = Dimensions.get("window").height;
const SCREEN_WIDTH = Dimensions.get("window").width;
import Icon from "react-native-vector-icons/Ionicons"
import Swiper from 'react-native-swiper';
class editCalendar extends Component {
static navigationOptions = ({ navigation }) => ({
title: 'Editar Calendário',
headerTitleStyle : {textAlign: 'center',alignSelf:'center'},
headerStyle:{
backgroundColor:'white',
},
});
constructor(props) {
super(props);
this.state = {
token: false,
tokenData: '',
loggedIn: false,
onHold: true,
user: {},
cenas:{Name:'as'},
text:'',
};
}
render() {
return (
<ScrollView>
<View styles={styles.header}>
<View style={styles.carreerPath}>
<Text style={styles.carreerPathText}>Carreer Paths</Text>
</View>
<View style={styles.carreerPathDescription}>
<Text >Nesta edição do enei vai ser possível aos participantes ecolherem uma área</Text>
</View>
<TouchableOpacity style={{marginRight: 20}} onPress={() => navigation.navigate('Profile')}>
<Text>Escolher path</Text>
</TouchableOpacity>
</View>
<View>
</View>
</ScrollView>
)
}
}
const styles = StyleSheet.create({
header:{
flex:1,
height: SCREEN_HEIGHT*0.1,
backgroundColor:'red'
},
carreerPath:{
flex:1,
backgroundColor:'#CC1A17',
height:SCREEN_HEIGHT*0.1,
justifyContent: 'center',
alignItems: 'center',
},
carreerPathText:{
fontSize:20,
fontWeight: 'bold',
color:'white'
},
carreerPathDescription:{
padding:10,
marginBottom:100
},
wrapper: {
},
slide1: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#9DD6EB',
},
slide2: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#97CAE5',
},
slide3: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#92BBD9',
},
text: {
color: '#fff',
fontSize: 30,
fontWeight: 'bold',
}
});
mapStateToProps = (state, props) => {
return {
token: state.apiReducer.token,
user: state.apiReducer.user
}
};
function mapDispatchToProps(dispatch) {
return bindActionCreators(Actions, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(editCalendar);

View File

@ -23,6 +23,7 @@ export const UI_LOGIN_PASSWORD_INPUT='UI_LOGIN_PASSWORD_INPUT'
export const UI_LOGIN_PASSWORD_INPUT_LOADING='UI_LOGIN_PASSWORD_INPUT_LOADING'
export const UI_LOGIN_PASSWORD_INPUT_INVALID='UI_LOGIN_PASSWORD_INPUT_INVALID'
export const UI_LOGIN_NOINTERNET='UI_LOGIN_NOINTERNET'
export const UI_LOGIN_OPEN_SCANNER='UI_LOIN_OPEN_SCANNER'
//HOME

View File

@ -1,9 +1,20 @@
import { AsyncStorage } from 'react-native';
const axios = require('axios');
import { NetInfo } from 'react-native';
import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS } from "./actionTypes" //Import the actions types constant we defined in our actions
import moment from 'moment'
export const connectionState = (status) => {
console.log(status);
return { type: 'CHANGE_CONNECTION_STATUS', isConnected: status };
};
export function getEvents(user){
return (dispatch)=>{
let events = [];
@ -15,7 +26,7 @@ export function getEvents(user){
events.push({
time: moment(user.Sessions[key].SessionStart).format('h:mm'),
timeEnd: moment(user.Sessions[key].SessionEnd).format('h:mm'),
lineColor:'#009688',
//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,
@ -68,6 +79,7 @@ const saveToken = async token => {
obj.expirationDateToken = await AsyncStorage.getItem('expirationDateToken') || 'none';
obj.refreshToken = await AsyncStorage.getItem('refreshToken') || 'none';
} catch (error) {
// Error retrieving data
@ -90,55 +102,8 @@ const deleteToken = async () => {
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;
}
@ -207,7 +172,7 @@ export function login(user, pass){
}
var obj={
access_token:parsed.access_token,
expirationDateToken:Math.round(new Date().getTime()/1000) + parsed.expires_in,
expirationDateToken:Math.round(new Date().getTime()/1000) + 3598,
refreshToken:parsed.refresh_token,
valid:true
};
@ -287,13 +252,15 @@ export function getUserInfo(token){
.then(function(res) {
console.log(res);
let obj = JSON.parse(res._bodyText);
dispatch({ type: USER_INFO, user: obj,onHold:false, logged:true });
}).catch(function(res){
dispatch({ type: USER_INFO, user: '',onHold:false, logged:true });
console.log("erro")
// dispatch({ type: USER_INFO,onHold:false});
})
@ -335,7 +302,7 @@ export function checkUser(){
a.valid=false;
console.log('check user deu falso')
console.log('token não existe em memória')
dispatch({type: CHECK_USER,token:a,logged:false, onHold:false});
@ -344,40 +311,101 @@ export function checkUser(){
a.valid=true;
console.log('Existe Token em memória' )
console.log('Existe Token em memória :'+ a.refreshToken )
//se expirar
if(Math.round(new Date().getTime()/1000) >= a.expirationDateToken){
// a.valid=false;
refresh=a.refreshToken
//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});
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("&");
fetch('http://enei2019.uingress.com/internal/api/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: formBody
}).then(res=>res.json()).then(parsed=>{
console.log(parsed);
if(parsed.error=='invalid_grant'){
console.log(formBody);
dispatch({type: CHECK_USER, token:'', logged:false, onHold:false});
}else{
var obj={
access_token:parsed.access_token,
expirationDateToken:Math.round(new Date().getTime()/1000) + 3598,
refreshToken:parsed.refresh_token,
valid:true
};
// deleteToken();
saveToken(obj).then(a=>{
console.log("Token guardado" )
console.log(obj)
dispatch({type: CHECK_USER, token:obj, logged:true, onHold:false});
})
}
}).catch(a=>{
console.log("erro na api")
dispatch({type: CHECK_USER, token:'', logged:false, onHold:false});
})
}else{
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, user:{Name:'Henrique'}});
}
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, logged:false});
console.log('erro a ler o token'+ a);
dispatch({type: CHECK_USER,token:false, logged:false, user:''});
})

View File

@ -1,4 +1,5 @@
export {checkUser, login,getEvents, hold, getUserInfo,logoutUser} from "./api"
export {openScannerLogin,closeLoginQRScan}from "./ui"

View File

@ -1,5 +1,5 @@
import { GET_EVENTS } from "./actionTypes" //Import the actions types constant we defined in our actions
import { GET_EVENTS, UI_LOGIN_OPEN_SCANNER } from "./actionTypes" //Import the actions types constant we defined in our actions
@ -13,4 +13,27 @@ export function showLoginPasswordInput(user){
});
}
}
}
export function openScannerLogin(){
return (dispatch)=>{
dispatch({
type: UI_LOGIN_OPEN_SCANNER,
UI_loginScannerActive:true
});
}
}
export function closeLoginQRScan(){
return (dispatch)=>{
dispatch({
type: UI_LOGIN_OPEN_SCANNER,
UI_loginScannerActive:false
});
}}

View File

@ -1,11 +1,24 @@
import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS } from "../actions/actionTypes" //Import the actions types constant we defined in our actions
import { REHYDRATE } from 'redux-persist';
let apiState= { token:{valid:false}, tokenData:'error', logged:false, onHold:true, user:{}, events:[], failedAttempt:false}
let apiState= { isConnected:false, token:{valid:false}, tokenData:'error', logged:false, onHold:true,user:{}, events:[], failedAttempt:false}
const apiReducer = (state = apiState, action) => {
switch(action.type){
case REHYDRATE:
console.log( action.payload)
return {
// ...state,
// logged:false,
//onHold:true,
user: action.payload.apiReducer.user
};
case 'CHANGE_CONNECTION_STATUS':
return Object.assign({}, state, {
isConnected: action.isConnected,
});
case HOLD:
@ -14,13 +27,13 @@ const apiReducer = (state = apiState, action) => {
case API_LOGIN:
state=Object.assign({},state, { logged:action.logged, token:action.token, failedAttempt: action.failedAttempt});
state=Object.assign({},state, { logged:action.logged, token:action.token, failedAttempt: action.failedAttempt, user:user});
return state;
case CHECK_USER:
state=Object.assign({},state, { token:action.token, logged:action.logged, onHold:action.onHold});
state=Object.assign({},state, { token:action.token,logged:action.logged, onHold:action.onHold});
return state;
@ -32,7 +45,7 @@ const apiReducer = (state = apiState, action) => {
case USER_INFO:
state=Object.assign({},state, { user: action.user, token: action.token , loggedIn:action.loggedIn, onHold:action.onHold});
state=Object.assign({},state, { user: action.user , loggedIn:action.loggedIn, onHold:action.onHold});
return state;
@ -41,7 +54,8 @@ const apiReducer = (state = apiState, action) => {
state=Object.assign({},state, { events: action.events});
return state;
default:
return state;

View File

@ -1,7 +1,7 @@
import { UI_LOGIN_PASSWORD_INPUT } from "../actions/actionTypes" //Import the actions types constant we defined in our actions
import { UI_LOGIN_PASSWORD_INPUT ,UI_LOGIN_OPEN_SCANNER} from "../actions/actionTypes" //Import the actions types constant we defined in our actions
let uiState= {UI_loginPasswordInputActive:false, UI_loginPasswordInputInvalid:false}
let uiState= {UI_loginPasswordInputActive:false, UI_loginPasswordInputInvalid:false, UI_loginScannerActive:false}
const uiReducer = (state = uiState, action) => {
@ -12,6 +12,11 @@ const uiReducer = (state = uiState, action) => {
state=Object.assign({},state, { onHold:true });
return state;
case UI_LOGIN_OPEN_SCANNER:
state=Object.assign({},state, { UI_loginScannerActive:action.UI_loginScannerActive });
return state;
default:
return state;
}

View File

@ -1,7 +1,25 @@
import { createStore, applyMiddleware } from 'redux';
import { createStore, applyMiddleware , compose} from 'redux';
import thunk from 'redux-thunk';
import reducers from './reducers/index'; //Import the reducer
import {persistStore, persistReducer} from 'redux-persist'
import {AsyncStorage} from 'react-native'
const persistConfig={
key:'root' ,
storage: AsyncStorage,
}
const persistedReduzer= persistReducer(persistConfig, reducers);
// Connect our store to the reducers
export default createStore(reducers, applyMiddleware(thunk));
export const store = createStore(persistedReduzer, applyMiddleware(thunk));
export const persistor=persistStore(store);

13
App/app/utils/scale.js Normal file
View File

@ -0,0 +1,13 @@
import { Dimensions } from 'react-native';
const { width, height } = Dimensions.get('window');
// Guideline sizes are based on standard ~5" screen mobile device
const guidelineBaseWidth = 350;
const guidelineBaseHeight = 680;
const scale = size => (width / guidelineBaseWidth) * size;
const scaleVertical = size => (height / guidelineBaseHeight) * size;
const scaleModerate = (size, factor = 0.5) => size + ((scale(size) - size) * factor);
export { scale, scaleVertical, scaleModerate };

View File

@ -0,0 +1,6 @@
function formatNumber(num) {
return num > 999 ? `${(num / 1000).toFixed(1)}k` : num;
}
export default formatNumber;

View File

@ -1,18 +1,30 @@
/** @format */
import React from 'react';
import {AppRegistry} from 'react-native';
import {AppRegistry, View,Text} from 'react-native';
import {Provider} from 'react-redux';
import {name as appName} from './app.json';
import store from './app/store/store'; //Import the store
import {PersistGate} from 'redux-persist/integration/react'
import App from './app/App' //Import the component file
import {store, persistor} from "./app/store/store";
rendeLoading=()=>{
<View>
<Text>loading........</Text>
</View>
}
const RNRedux = () => (
<Provider store={store}>
<App />
<PersistGate persistor={persistor} loading={this.rendeLoading()}>
<App />
</PersistGate>
</Provider>
);

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

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

View File

@ -36,27 +36,29 @@
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 */; };
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 */; };
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 */; };
BEA7C1C022034BC800B47CD7 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B122034BC800B47CD7 /* MaterialIcons.ttf */; };
BEA7C1C122034BC800B47CD7 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BEA7C1B222034BC800B47CD7 /* FontAwesome.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 */; };
BE104176D74E47E9A369B15A /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EB0A5A258CBE4EEFAD3C358E /* libRNVectorIcons.a */; };
BE302B6D221B7875005626CF /* libRNCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE302B6C221B7860005626CF /* libRNCamera.a */; };
BE302B74221B7ACE005626CF /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE302B73221B7AC8005626CF /* libRNGestureHandler.a */; };
BE5EAB78221B7D5400E92E5B /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB69221B7D5300E92E5B /* MaterialIcons.ttf */; };
BE5EAB79221B7D5400E92E5B /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6A221B7D5300E92E5B /* Entypo.ttf */; };
BE5EAB7A221B7D5400E92E5B /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6B221B7D5300E92E5B /* FontAwesome.ttf */; };
BE5EAB7B221B7D5400E92E5B /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6C221B7D5300E92E5B /* SimpleLineIcons.ttf */; };
BE5EAB7C221B7D5400E92E5B /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6D221B7D5300E92E5B /* EvilIcons.ttf */; };
BE5EAB7D221B7D5400E92E5B /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6E221B7D5300E92E5B /* FontAwesome5_Regular.ttf */; };
BE5EAB7E221B7D5400E92E5B /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB6F221B7D5300E92E5B /* Foundation.ttf */; };
BE5EAB7F221B7D5400E92E5B /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB70221B7D5300E92E5B /* Feather.ttf */; };
BE5EAB80221B7D5400E92E5B /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB71221B7D5400E92E5B /* FontAwesome5_Solid.ttf */; };
BE5EAB81221B7D5400E92E5B /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB72221B7D5400E92E5B /* AntDesign.ttf */; };
BE5EAB82221B7D5400E92E5B /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB73221B7D5400E92E5B /* MaterialCommunityIcons.ttf */; };
BE5EAB84221B7D5400E92E5B /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB75221B7D5400E92E5B /* FontAwesome5_Brands.ttf */; };
BE5EAB85221B7D5400E92E5B /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB76221B7D5400E92E5B /* Octicons.ttf */; };
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 */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -333,41 +335,55 @@
remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
remoteInfo = RCTBlob;
};
BE2BDF912200F93B0001B8A8 /* PBXContainerItemProxy */ = {
BE302B6B221B7860005626CF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE2BDF682200F93B0001B8A8 /* RNGestureHandler.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RNGestureHandler;
};
BE2BDF972200F9490001B8A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE2BDF932200F9490001B8A8 /* RNCamera.xcodeproj */;
containerPortal = BE302B67221B7860005626CF /* RNCamera.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 4107012F1ACB723B00C6AA39;
remoteInfo = RNCamera;
};
BE2BDF9F2200F9830001B8A8 /* PBXContainerItemProxy */ = {
BE302B72221B7AC8005626CF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE2BDF9B2200F9830001B8A8 /* ReactNativePermissions.xcodeproj */;
containerPortal = BE302B6E221B7AC7005626CF /* RNGestureHandler.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9D23B34F1C767B80008B4819;
remoteInfo = ReactNativePermissions;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RNGestureHandler;
};
BE2BDFDE2201012E0001B8A8 /* PBXContainerItemProxy */ = {
BE5EABF6221B834400E92E5B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE2BDFD92201012E0001B8A8 /* RNVectorIcons.xcodeproj */;
containerPortal = 664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
remoteInfo = RNVectorIcons;
};
BE2BDFE02201012E0001B8A8 /* PBXContainerItemProxy */ = {
BE5EABF8221B834400E92E5B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE2BDFD92201012E0001B8A8 /* RNVectorIcons.xcodeproj */;
containerPortal = 664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A39873CE1EA65EE60051E01A;
remoteInfo = "RNVectorIcons-tvOS";
};
BE5EAC36221B835A00E92E5B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = BVLinearGradient;
};
BE5EAC38221B835A00E92E5B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 64AA15081EF7F30100718508;
remoteInfo = "BVLinearGradient-tvOS";
};
BE5EAC3F221B888C00E92E5B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE5EAC3B221B888C00E92E5B /* ReactNativePermissions.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9D23B34F1C767B80008B4819;
remoteInfo = ReactNativePermissions;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@ -377,12 +393,12 @@
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = "<group>"; };
00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = "<group>"; };
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = "<group>"; };
00E356EE1AD99517003FC87E /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356EE1AD99517003FC87E /* appTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = appTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* appTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = appTests.m; sourceTree = "<group>"; };
139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; };
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* enei2019.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = enei2019.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07F961A680F5B00A75B9A /* app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = app.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = app/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = app/AppDelegate.m; sourceTree = "<group>"; };
13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
@ -390,33 +406,36 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = app/Info.plist; sourceTree = "<group>"; };
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>"; };
2D02E47B1E0B4A5D006451C7 /* enei2019-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "enei2019-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* enei2019-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "enei2019-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
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>"; };
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; };
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>"; };
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>"; };
95B0A42B6CD8441E904E6EB9 /* libRNVectorIcons-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNVectorIcons-tvOS.a"; 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>"; };
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>"; };
BE302B67221B7860005626CF /* RNCamera.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RNCamera.xcodeproj"; sourceTree = "<group>"; };
BE302B6E221B7AC7005626CF /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = "<group>"; };
BE302B75221B7C3B005626CF /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Ionicons.ttf; path = "../node_modules/react-native-ionicons/fonts/Ionicons.ttf"; sourceTree = "<group>"; };
BE5EAB69221B7D5300E92E5B /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
BE5EAB6A221B7D5300E92E5B /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
BE5EAB6B221B7D5300E92E5B /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
BE5EAB6C221B7D5300E92E5B /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
BE5EAB6D221B7D5300E92E5B /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
BE5EAB6E221B7D5300E92E5B /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
BE5EAB6F221B7D5300E92E5B /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
BE5EAB70221B7D5300E92E5B /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
BE5EAB71221B7D5400E92E5B /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; };
BE5EAB72221B7D5400E92E5B /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
BE5EAB73221B7D5400E92E5B /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
BE5EAB75221B7D5400E92E5B /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
BE5EAB76221B7D5400E92E5B /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
BE5EAB77221B7D5400E92E5B /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
BE5EAC3B221B888C00E92E5B /* ReactNativePermissions.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativePermissions.xcodeproj; path = "../node_modules/react-native-permissions/ios/ReactNativePermissions.xcodeproj"; sourceTree = "<group>"; };
C00CE8A4E3B747F9816B91CF /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = "<group>"; };
EB0A5A258CBE4EEFAD3C358E /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -432,10 +451,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE2BDFE2220101420001B8A8 /* libRNVectorIcons.a in Frameworks */,
BE2BDFA12200F9880001B8A8 /* libReactNativePermissions.a in Frameworks */,
BE2BDF9A2200F96A0001B8A8 /* libRNGestureHandler.a in Frameworks */,
BE2BDF992200F95B0001B8A8 /* libRNCamera.a in Frameworks */,
BE302B74221B7ACE005626CF /* libRNGestureHandler.a in Frameworks */,
BE302B6D221B7875005626CF /* libRNCamera.a in Frameworks */,
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
@ -445,9 +462,12 @@
133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
BE5EAC41221B889900E92E5B /* libReactNativePermissions.a in Frameworks */,
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
BE104176D74E47E9A369B15A /* libRNVectorIcons.a in Frameworks */,
69E1B84AE0DF486CB1B1D226 /* libBVLinearGradient.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -463,6 +483,7 @@
2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
514DB1DF2E3B452F9EF272E3 /* libRNVectorIcons-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -610,29 +631,6 @@
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 = (
@ -645,10 +643,9 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
BE2BDFD92201012E0001B8A8 /* RNVectorIcons.xcodeproj */,
BE2BDF9B2200F9830001B8A8 /* ReactNativePermissions.xcodeproj */,
BE2BDF932200F9490001B8A8 /* RNCamera.xcodeproj */,
BE2BDF682200F93B0001B8A8 /* RNGestureHandler.xcodeproj */,
BE5EAC3B221B888C00E92E5B /* ReactNativePermissions.xcodeproj */,
BE302B6E221B7AC7005626CF /* RNGestureHandler.xcodeproj */,
BE302B67221B7860005626CF /* RNCamera.xcodeproj */,
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
@ -661,6 +658,8 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */,
1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
@ -677,12 +676,13 @@
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
BE5EAB41221B7D2A00E92E5B /* Resources */,
13B07FAE1A68108700A75B9A /* app */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* appTests */,
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
624432DF59944E72B6023C91 /* Resources */,
BE5EABCA221B834300E92E5B /* Recovered References */,
);
indentWidth = 2;
sourceTree = "<group>";
@ -692,10 +692,10 @@
83CBBA001A601CBA00E9B192 /* Products */ = {
isa = PBXGroup;
children = (
13B07F961A680F5B00A75B9A /* enei2019.app */,
00E356EE1AD99517003FC87E /* Tests.xctest */,
2D02E47B1E0B4A5D006451C7 /* enei2019-tvOS.app */,
2D02E4901E0B4A5D006451C7 /* enei2019-tvOSTests.xctest */,
13B07F961A680F5B00A75B9A /* app.app */,
00E356EE1AD99517003FC87E /* appTests.xctest */,
2D02E47B1E0B4A5D006451C7 /* app-tvOS.app */,
2D02E4901E0B4A5D006451C7 /* app-tvOSTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@ -709,35 +709,76 @@
name = Products;
sourceTree = "<group>";
};
BE2BDF692200F93B0001B8A8 /* Products */ = {
BE302B68221B7860005626CF /* Products */ = {
isa = PBXGroup;
children = (
BE2BDF922200F93B0001B8A8 /* libRNGestureHandler.a */,
BE302B6C221B7860005626CF /* libRNCamera.a */,
);
name = Products;
sourceTree = "<group>";
};
BE2BDF942200F9490001B8A8 /* Products */ = {
BE302B6F221B7AC7005626CF /* Products */ = {
isa = PBXGroup;
children = (
BE2BDF982200F9490001B8A8 /* libRNCamera.a */,
BE302B73221B7AC8005626CF /* libRNGestureHandler.a */,
);
name = Products;
sourceTree = "<group>";
};
BE2BDF9C2200F9830001B8A8 /* Products */ = {
BE5EAB41221B7D2A00E92E5B /* Resources */ = {
isa = PBXGroup;
children = (
BE2BDFA02200F9830001B8A8 /* libReactNativePermissions.a */,
BE5EAB72221B7D5400E92E5B /* AntDesign.ttf */,
BE5EAB6A221B7D5300E92E5B /* Entypo.ttf */,
BE5EAB6D221B7D5300E92E5B /* EvilIcons.ttf */,
BE5EAB70221B7D5300E92E5B /* Feather.ttf */,
BE5EAB6B221B7D5300E92E5B /* FontAwesome.ttf */,
BE5EAB75221B7D5400E92E5B /* FontAwesome5_Brands.ttf */,
BE5EAB6E221B7D5300E92E5B /* FontAwesome5_Regular.ttf */,
BE5EAB71221B7D5400E92E5B /* FontAwesome5_Solid.ttf */,
BE5EAB6F221B7D5300E92E5B /* Foundation.ttf */,
BE5EAB73221B7D5400E92E5B /* MaterialCommunityIcons.ttf */,
BE5EAB69221B7D5300E92E5B /* MaterialIcons.ttf */,
BE5EAB76221B7D5400E92E5B /* Octicons.ttf */,
BE5EAB6C221B7D5300E92E5B /* SimpleLineIcons.ttf */,
BE5EAB77221B7D5400E92E5B /* Zocial.ttf */,
BE302B75221B7C3B005626CF /* Ionicons.ttf */,
);
name = Resources;
sourceTree = "<group>";
};
BE5EABCA221B834300E92E5B /* Recovered References */ = {
isa = PBXGroup;
children = (
EB0A5A258CBE4EEFAD3C358E /* libRNVectorIcons.a */,
95B0A42B6CD8441E904E6EB9 /* libRNVectorIcons-tvOS.a */,
C00CE8A4E3B747F9816B91CF /* libBVLinearGradient.a */,
);
name = "Recovered References";
sourceTree = "<group>";
};
BE5EABF2221B834400E92E5B /* Products */ = {
isa = PBXGroup;
children = (
BE5EABF7221B834400E92E5B /* libRNVectorIcons.a */,
BE5EABF9221B834400E92E5B /* libRNVectorIcons-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
BE2BDFDA2201012E0001B8A8 /* Products */ = {
BE5EAC32221B835A00E92E5B /* Products */ = {
isa = PBXGroup;
children = (
BE2BDFDF2201012E0001B8A8 /* libRNVectorIcons.a */,
BE2BDFE12201012E0001B8A8 /* libRNVectorIcons-tvOS.a */,
BE5EAC37221B835A00E92E5B /* libBVLinearGradient.a */,
BE5EAC39221B835A00E92E5B /* libBVLinearGradient.a */,
);
name = Products;
sourceTree = "<group>";
};
BE5EAC3C221B888C00E92E5B /* Products */ = {
isa = PBXGroup;
children = (
BE5EAC40221B888C00E92E5B /* libReactNativePermissions.a */,
);
name = Products;
sourceTree = "<group>";
@ -745,27 +786,27 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
00E356ED1AD99517003FC87E /* Tests */ = {
00E356ED1AD99517003FC87E /* appTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Tests" */;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "appTests" */;
buildPhases = (
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
00E356EB1AD99517003FC87E /* Frameworks */,
);
buildRules = (
);
dependencies = (
00E356F51AD99517003FC87E /* PBXTargetDependency */,
);
name = Tests;
name = appTests;
productName = appTests;
productReference = 00E356EE1AD99517003FC87E /* Tests.xctest */;
productReference = 00E356EE1AD99517003FC87E /* appTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
13B07F861A680F5B00A75B9A /* enei2019 */ = {
13B07F861A680F5B00A75B9A /* app */ = {
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "enei2019" */;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "app" */;
buildPhases = (
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
@ -776,14 +817,14 @@
);
dependencies = (
);
name = enei2019;
name = app;
productName = "Hello World";
productReference = 13B07F961A680F5B00A75B9A /* enei2019.app */;
productReference = 13B07F961A680F5B00A75B9A /* app.app */;
productType = "com.apple.product-type.application";
};
2D02E47A1E0B4A5D006451C7 /* enei2019-tvOS */ = {
2D02E47A1E0B4A5D006451C7 /* app-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "enei2019-tvOS" */;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOS" */;
buildPhases = (
2D02E4771E0B4A5D006451C7 /* Sources */,
2D02E4781E0B4A5D006451C7 /* Frameworks */,
@ -794,14 +835,14 @@
);
dependencies = (
);
name = "enei2019-tvOS";
name = "app-tvOS";
productName = "app-tvOS";
productReference = 2D02E47B1E0B4A5D006451C7 /* enei2019-tvOS.app */;
productReference = 2D02E47B1E0B4A5D006451C7 /* app-tvOS.app */;
productType = "com.apple.product-type.application";
};
2D02E48F1E0B4A5D006451C7 /* enei2019-tvOSTests */ = {
2D02E48F1E0B4A5D006451C7 /* app-tvOSTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "enei2019-tvOSTests" */;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOSTests" */;
buildPhases = (
2D02E48C1E0B4A5D006451C7 /* Sources */,
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
@ -812,9 +853,9 @@
dependencies = (
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
);
name = "enei2019-tvOSTests";
name = "app-tvOSTests";
productName = "app-tvOSTests";
productReference = 2D02E4901E0B4A5D006451C7 /* enei2019-tvOSTests.xctest */;
productReference = 2D02E4901E0B4A5D006451C7 /* app-tvOSTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
@ -828,7 +869,6 @@
TargetAttributes = {
00E356ED1AD99517003FC87E = {
CreatedOnToolsVersion = 6.2;
DevelopmentTeam = HLA62A6826;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
13B07F861A680F5B00A75B9A = {
@ -845,7 +885,7 @@
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "enei2019" */;
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "app" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
@ -857,6 +897,10 @@
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = BE5EAC32221B835A00E92E5B /* Products */;
ProjectRef = 1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */;
},
{
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
@ -906,28 +950,28 @@
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
},
{
ProductGroup = BE2BDF9C2200F9830001B8A8 /* Products */;
ProjectRef = BE2BDF9B2200F9830001B8A8 /* ReactNativePermissions.xcodeproj */;
ProductGroup = BE5EAC3C221B888C00E92E5B /* Products */;
ProjectRef = BE5EAC3B221B888C00E92E5B /* ReactNativePermissions.xcodeproj */;
},
{
ProductGroup = BE2BDF942200F9490001B8A8 /* Products */;
ProjectRef = BE2BDF932200F9490001B8A8 /* RNCamera.xcodeproj */;
ProductGroup = BE302B68221B7860005626CF /* Products */;
ProjectRef = BE302B67221B7860005626CF /* RNCamera.xcodeproj */;
},
{
ProductGroup = BE2BDF692200F93B0001B8A8 /* Products */;
ProjectRef = BE2BDF682200F93B0001B8A8 /* RNGestureHandler.xcodeproj */;
ProductGroup = BE302B6F221B7AC7005626CF /* Products */;
ProjectRef = BE302B6E221B7AC7005626CF /* RNGestureHandler.xcodeproj */;
},
{
ProductGroup = BE2BDFDA2201012E0001B8A8 /* Products */;
ProjectRef = BE2BDFD92201012E0001B8A8 /* RNVectorIcons.xcodeproj */;
ProductGroup = BE5EABF2221B834400E92E5B /* Products */;
ProjectRef = 664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */;
},
);
projectRoot = "";
targets = (
13B07F861A680F5B00A75B9A /* enei2019 */,
00E356ED1AD99517003FC87E /* Tests */,
2D02E47A1E0B4A5D006451C7 /* enei2019-tvOS */,
2D02E48F1E0B4A5D006451C7 /* enei2019-tvOSTests */,
13B07F861A680F5B00A75B9A /* app */,
00E356ED1AD99517003FC87E /* appTests */,
2D02E47A1E0B4A5D006451C7 /* app-tvOS */,
2D02E48F1E0B4A5D006451C7 /* app-tvOSTests */,
);
};
/* End PBXProject section */
@ -1192,39 +1236,53 @@
remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE2BDF922200F93B0001B8A8 /* libRNGestureHandler.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNGestureHandler.a;
remoteRef = BE2BDF912200F93B0001B8A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE2BDF982200F9490001B8A8 /* libRNCamera.a */ = {
BE302B6C221B7860005626CF /* libRNCamera.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNCamera.a;
remoteRef = BE2BDF972200F9490001B8A8 /* PBXContainerItemProxy */;
remoteRef = BE302B6B221B7860005626CF /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE2BDFA02200F9830001B8A8 /* libReactNativePermissions.a */ = {
BE302B73221B7AC8005626CF /* libRNGestureHandler.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libReactNativePermissions.a;
remoteRef = BE2BDF9F2200F9830001B8A8 /* PBXContainerItemProxy */;
path = libRNGestureHandler.a;
remoteRef = BE302B72221B7AC8005626CF /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE2BDFDF2201012E0001B8A8 /* libRNVectorIcons.a */ = {
BE5EABF7221B834400E92E5B /* libRNVectorIcons.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNVectorIcons.a;
remoteRef = BE2BDFDE2201012E0001B8A8 /* PBXContainerItemProxy */;
remoteRef = BE5EABF6221B834400E92E5B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE2BDFE12201012E0001B8A8 /* libRNVectorIcons-tvOS.a */ = {
BE5EABF9221B834400E92E5B /* libRNVectorIcons-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNVectorIcons-tvOS.a";
remoteRef = BE2BDFE02201012E0001B8A8 /* PBXContainerItemProxy */;
remoteRef = BE5EABF8221B834400E92E5B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE5EAC37221B835A00E92E5B /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = BE5EAC36221B835A00E92E5B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE5EAC39221B835A00E92E5B /* libBVLinearGradient.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libBVLinearGradient.a;
remoteRef = BE5EAC38221B835A00E92E5B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
BE5EAC40221B888C00E92E5B /* libReactNativePermissions.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libReactNativePermissions.a;
remoteRef = BE5EAC3F221B888C00E92E5B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
@ -1241,23 +1299,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 */,
BE5EAB81221B7D5400E92E5B /* AntDesign.ttf in Resources */,
BE5EAB78221B7D5400E92E5B /* MaterialIcons.ttf in Resources */,
BE5EAB7F221B7D5400E92E5B /* Feather.ttf in Resources */,
BE5EAB7E221B7D5400E92E5B /* Foundation.ttf in Resources */,
BE5EAB86221B7D5400E92E5B /* Zocial.ttf in Resources */,
BE5EAB85221B7D5400E92E5B /* Octicons.ttf in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
BE5EAB79221B7D5400E92E5B /* Entypo.ttf in Resources */,
BE5EAC3A221B83CF00E92E5B /* Ionicons.ttf 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 */,
BE5EAB84221B7D5400E92E5B /* FontAwesome5_Brands.ttf in Resources */,
BE5EAB82221B7D5400E92E5B /* MaterialCommunityIcons.ttf in Resources */,
BE5EAB7C221B7D5400E92E5B /* EvilIcons.ttf in Resources */,
BE5EAB7D221B7D5400E92E5B /* FontAwesome5_Regular.ttf in Resources */,
BE5EAB80221B7D5400E92E5B /* FontAwesome5_Solid.ttf in Resources */,
BE5EAB7B221B7D5400E92E5B /* SimpleLineIcons.ttf in Resources */,
BE5EAB7A221B7D5400E92E5B /* FontAwesome.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1291,7 +1349,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
isa = PBXShellScriptBuildPhase;
@ -1349,12 +1407,12 @@
/* Begin PBXTargetDependency section */
00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 13B07F861A680F5B00A75B9A /* enei2019 */;
target = 13B07F861A680F5B00A75B9A /* app */;
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
};
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 2D02E47A1E0B4A5D006451C7 /* enei2019-tvOS */;
target = 2D02E47A1E0B4A5D006451C7 /* app-tvOS */;
targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@ -1376,22 +1434,31 @@
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEVELOPMENT_TEAM = HLA62A6826;
ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = appTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/enei2019.enei2019/enei2019";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/app";
};
name = Debug;
};
@ -1400,18 +1467,27 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = HLA62A6826;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = appTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/enei2019.enei2019/enei2019";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/app";
};
name = Release;
};
@ -1422,6 +1498,11 @@
CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = HLA62A6826;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
@ -1429,9 +1510,8 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = enei;
PRODUCT_MODULE_NAME = App;
PRODUCT_NAME = enei2019;
PRODUCT_BUNDLE_IDENTIFIER = enei.app;
PRODUCT_NAME = app;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@ -1442,6 +1522,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = HLA62A6826;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
@ -1449,9 +1534,8 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = enei;
PRODUCT_MODULE_NAME = App;
PRODUCT_NAME = enei2019;
PRODUCT_BUNDLE_IDENTIFIER = enei.app;
PRODUCT_NAME = app;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
@ -1468,8 +1552,19 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "app-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
@ -1494,8 +1589,19 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "app-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
@ -1519,8 +1625,19 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
@ -1528,7 +1645,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.app-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/enei2019-tvOS.enei2019/enei2019-tvOS";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app-tvOS.app/app-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
};
name = Debug;
@ -1544,8 +1661,19 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
);
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
@ -1553,7 +1681,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.app-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/enei2019-tvOS.enei2019/enei2019-tvOS";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app-tvOS.app/app-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
};
name = Release;
@ -1587,7 +1715,6 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1641,7 +1768,6 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1662,7 +1788,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "Tests" */ = {
00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "appTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
00E356F61AD99517003FC87E /* Debug */,
@ -1671,7 +1797,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "enei2019" */ = {
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "app" */ = {
isa = XCConfigurationList;
buildConfigurations = (
13B07F941A680F5B00A75B9A /* Debug */,
@ -1680,7 +1806,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "enei2019-tvOS" */ = {
2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2D02E4971E0B4A5E006451C7 /* Debug */,
@ -1689,7 +1815,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "enei2019-tvOSTests" */ = {
2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "app-tvOSTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2D02E4991E0B4A5E006451C7 /* Debug */,
@ -1698,7 +1824,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "enei2019" */ = {
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "app" */ = {
isa = XCConfigurationList;
buildConfigurations = (
83CBBA201A601CBA00E9B192 /* Debug */,

View File

@ -29,9 +29,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "enei2019-tvOS.app"
BlueprintName = "enei2019-tvOS"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOS.app"
BlueprintName = "app-tvOS"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
@ -43,9 +43,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "enei2019-tvOSTests.xctest"
BlueprintName = "enei2019-tvOSTests"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOSTests.xctest"
BlueprintName = "app-tvOSTests"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -61,9 +61,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "enei2019-tvOSTests.xctest"
BlueprintName = "enei2019-tvOSTests"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOSTests.xctest"
BlueprintName = "app-tvOSTests"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
@ -71,9 +71,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "enei2019-tvOS.app"
BlueprintName = "enei2019-tvOS"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOS.app"
BlueprintName = "app-tvOS"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
@ -94,9 +94,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "enei2019-tvOS.app"
BlueprintName = "enei2019-tvOS"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOS.app"
BlueprintName = "app-tvOS"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
@ -113,9 +113,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "enei2019-tvOS.app"
BlueprintName = "enei2019-tvOS"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app-tvOS.app"
BlueprintName = "app-tvOS"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View File

@ -29,9 +29,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "enei2019.app"
BlueprintName = "enei2019"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app.app"
BlueprintName = "app"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
@ -43,9 +43,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "Tests.xctest"
BlueprintName = "Tests"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "appTests.xctest"
BlueprintName = "appTests"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -61,9 +61,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "Tests.xctest"
BlueprintName = "Tests"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "appTests.xctest"
BlueprintName = "appTests"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
@ -71,9 +71,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "enei2019.app"
BlueprintName = "enei2019"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app.app"
BlueprintName = "app"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
@ -94,9 +94,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "enei2019.app"
BlueprintName = "enei2019"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app.app"
BlueprintName = "app"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
@ -113,9 +113,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "enei2019.app"
BlueprintName = "enei2019"
ReferencedContainer = "container:enei2019.xcodeproj">
BuildableName = "app.app"
BlueprintName = "app"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

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

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

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

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="NO">
<?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">
<dependencies>
<development version="7000" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
@ -17,14 +18,14 @@
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="enei2019" 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" text="app" 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" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<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,57 +1,48 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo-20@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo-20@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo-29@2x-1.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo-29@3x-1.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo-40@2x.png",
"size" : "40x40",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo-40@3x.png",
"size" : "40x40",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo-60@2x.png",
"size" : "60x60",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo-60@3x.png",
"size" : "60x60",
"scale" : "3x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "logo-1024.png",
"size" : "1024x1024",
"scale" : "1x"
}
],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

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

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

@ -2,16 +2,28 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>UIAppFonts</key>
<array>
<string></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></string>
<key>CFBundleDisplayName</key>
<string>ENEI 2019</string>
<string>app</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@ -35,18 +47,7 @@
</dict>
</dict>
</dict>
<key>NSCameraUsageDescription</key>
<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>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
@ -54,6 +55,8 @@
<array>
<string>armv7</string>
</array>
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>

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

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

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

1123
App/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -7,22 +7,35 @@
"test": "jest"
},
"dependencies": {
"@redux-offline/redux-offline": "^2.5.1",
"axios": "^0.18.0",
"expo": "^32.0.5",
"material-icons-react": "^1.0.4",
"moment": "^2.24.0",
"prop-types": "^15.6.2",
"react": "16.6.3",
"react-native": "0.57.8",
"react-native-action-button": "^2.8.5",
"react-native-app-intro-slider": "^1.0.1",
"react-native-camera": "^1.9.2",
"react-native-confirmation-code-input": "^1.0.4",
"react-native-elements": "^1.0.0",
"react-native-fit-image": "^1.5.4",
"react-native-gesture-handler": "^1.0.15",
"react-native-image-overlay": "^0.1.2",
"react-native-ionicons": "^4.5.5",
"react-native-linear-gradient": "^2.5.3",
"react-native-loader": "^1.2.1",
"react-native-loading-spinner-overlay": "^1.0.1",
"react-native-material-dropdown": "^0.11.1",
"react-native-material-shadows": "0.0.2",
"react-native-modal": "^7.0.2",
"react-native-offline": "^4.3.0",
"react-native-progress": "^3.5.0",
"react-native-pull-to-refresh": "^2.1.3",
"react-native-qrcode-scanner": "^1.1.2",
"react-native-shadow": "^1.2.2",
"react-native-swiper": "^1.5.14",
"react-native-timeline-feed": "^1.0.1",
"react-native-timeline-listview": "^0.2.3",
"react-native-ui-kitten": "^3.1.2",
@ -31,6 +44,7 @@
"react-redux": "^6.0.0",
"redux": "^4.0.1",
"redux-logger": "^3.0.6",
"redux-persist": "^5.10.0",
"redux-thunk": "^2.3.0"
},
"devDependencies": {

7228
App/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,49 +0,0 @@
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using api.Data;
using api.Dtos;
using api.Models;
using AutoMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
namespace api.Controllers
{
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class TeamsController : ControllerBase
{
private readonly ITeamsRepository _repo;
private readonly IMapper _mapper;
private readonly UserManager<User> _userManager;
private readonly DataContext _context;
public TeamsController(DataContext context, ITeamsRepository repo, IMapper mapper,UserManager<User> userManager)
{
_context = context;
_userManager = userManager;
_repo = repo;
_mapper = mapper;
}
[Authorize]
[HttpGet]
public async Task<IActionResult> GetTeams()
{
var result = await _repo.GetTeams();
return Ok(result);
}
}
}

View File

@ -1,38 +0,0 @@
using System.Threading.Tasks;
using api.Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using api.Dtos;
using Microsoft.AspNetCore.Identity;
using api.Models;
using Microsoft.AspNetCore.Diagnostics;
namespace api.Controllers
{
public class errorController : Controller
{
[Route("Error/{statusCode}")]
public IActionResult HandleErrorCode(int statusCode)
{
var statusCodeData = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();
switch (statusCode)
{
case 404:
ViewBag.ErrorMessage = "Sorry the page you requested could not be found";
ViewBag.RouteOfException = statusCodeData.OriginalPath;
break;
case 500:
ViewBag.ErrorMessage = "Sorry something went wrong on the server";
ViewBag.RouteOfException = statusCodeData.OriginalPath;
break;
}
return View();
}
}
}

View File

@ -31,9 +31,6 @@ namespace api.Controllers
return View("Views/Landing/index.cshtml");
}

View File

@ -14,7 +14,6 @@ namespace api.Data
public DbSet<Photo> Photos {get;set;}
public DbSet<Team> Teams {get;set;}
protected override void OnModelCreating(ModelBuilder builder)

View File

@ -9,6 +9,7 @@ namespace api.Data
Task<User> Register(User user, string Password);
Task<User> Login(string username, string password);
}
}

View File

@ -1,13 +0,0 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using api.Models;
namespace api.Data
{
public interface ITeamsRepository
{
Task<IEnumerable<Team>> GetTeams();
}
}

View File

@ -1,23 +0,0 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using api.Models;
using Microsoft.EntityFrameworkCore;
namespace api.Data
{
public class TeamsRepository : ITeamsRepository
{
private readonly DataContext _context;
public TeamsRepository(DataContext context)
{
this._context = context;
}
public async Task<IEnumerable<Team>> GetTeams()
{
var teams = await _context.Teams.ToListAsync();
return teams;
}
}
}

View File

@ -20,7 +20,7 @@ namespace api.Data
public void Delete<T>(T entity) where T : class
{
_context.Remove(entity);
}

View File

@ -0,0 +1,285 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace api.Migrations
{
public partial class update : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "AspNetRoles",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(maxLength: 256, nullable: true),
NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetRoles", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AspNetUsers",
columns: table => new
{
AccessFailedCount = table.Column<int>(nullable: false),
EmailConfirmed = table.Column<bool>(nullable: false),
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
LockoutEnabled = table.Column<bool>(nullable: false),
LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
PhoneNumberConfirmed = table.Column<bool>(nullable: false),
TwoFactorEnabled = table.Column<bool>(nullable: false),
UserName = table.Column<string>(maxLength: 256, nullable: true),
NormalizedUserName = table.Column<string>(maxLength: 256, nullable: true),
Email = table.Column<string>(maxLength: 256, nullable: true),
NormalizedEmail = table.Column<string>(maxLength: 256, nullable: true),
PasswordHash = table.Column<string>(nullable: true),
SecurityStamp = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true),
PhoneNumber = table.Column<string>(nullable: true),
FullName = table.Column<string>(nullable: true),
Gender = table.Column<string>(nullable: true),
Age = table.Column<int>(nullable: false),
Phone = table.Column<int>(nullable: false),
University = table.Column<string>(nullable: true),
Adress = table.Column<string>(nullable: true),
Country = table.Column<string>(nullable: true),
City = table.Column<string>(nullable: true),
linkedIn = table.Column<string>(nullable: true),
LastLogin = table.Column<DateTime>(nullable: false),
Registed = table.Column<DateTime>(nullable: false),
QRcode = table.Column<string>(nullable: true),
Role = table.Column<string>(nullable: true),
Degree = table.Column<string>(nullable: true),
SchoolYear = table.Column<int>(nullable: false),
ProfileIcon = table.Column<string>(nullable: true),
Company = table.Column<string>(nullable: true),
Position = table.Column<string>(nullable: true),
About = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Values",
columns: table => new
{
id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Values", x => x.id);
});
migrationBuilder.CreateTable(
name: "AspNetRoleClaims",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
RoleId = table.Column<int>(nullable: false),
ClaimType = table.Column<string>(nullable: true),
ClaimValue = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
table.ForeignKey(
name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
column: x => x.RoleId,
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUserClaims",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
UserId = table.Column<int>(nullable: false),
ClaimType = table.Column<string>(nullable: true),
ClaimValue = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
table.ForeignKey(
name: "FK_AspNetUserClaims_AspNetUsers_UserId",
column: x => x.UserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUserLogins",
columns: table => new
{
LoginProvider = table.Column<string>(nullable: false),
ProviderKey = table.Column<string>(nullable: false),
ProviderDisplayName = table.Column<string>(nullable: true),
UserId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
table.ForeignKey(
name: "FK_AspNetUserLogins_AspNetUsers_UserId",
column: x => x.UserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUserRoles",
columns: table => new
{
RoleId = table.Column<int>(nullable: false),
UserId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
table.ForeignKey(
name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
column: x => x.RoleId,
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_AspNetUserRoles_AspNetUsers_UserId",
column: x => x.UserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUserTokens",
columns: table => new
{
UserId = table.Column<int>(nullable: false),
LoginProvider = table.Column<string>(nullable: false),
Name = table.Column<string>(nullable: false),
Value = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
table.ForeignKey(
name: "FK_AspNetUserTokens_AspNetUsers_UserId",
column: x => x.UserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Photos",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Url = table.Column<string>(nullable: true),
Description = table.Column<string>(nullable: true),
DateAdded = table.Column<DateTime>(nullable: false),
IsMain = table.Column<bool>(nullable: false),
UserId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Photos", x => x.Id);
table.ForeignKey(
name: "FK_Photos_AspNetUsers_UserId",
column: x => x.UserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_AspNetRoleClaims_RoleId",
table: "AspNetRoleClaims",
column: "RoleId");
migrationBuilder.CreateIndex(
name: "RoleNameIndex",
table: "AspNetRoles",
column: "NormalizedName",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_AspNetUserClaims_UserId",
table: "AspNetUserClaims",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_AspNetUserLogins_UserId",
table: "AspNetUserLogins",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_AspNetUserRoles_RoleId",
table: "AspNetUserRoles",
column: "RoleId");
migrationBuilder.CreateIndex(
name: "EmailIndex",
table: "AspNetUsers",
column: "NormalizedEmail");
migrationBuilder.CreateIndex(
name: "UserNameIndex",
table: "AspNetUsers",
column: "NormalizedUserName",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Photos_UserId",
table: "Photos",
column: "UserId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "AspNetRoleClaims");
migrationBuilder.DropTable(
name: "AspNetUserClaims");
migrationBuilder.DropTable(
name: "AspNetUserLogins");
migrationBuilder.DropTable(
name: "AspNetUserRoles");
migrationBuilder.DropTable(
name: "AspNetUserTokens");
migrationBuilder.DropTable(
name: "Photos");
migrationBuilder.DropTable(
name: "Values");
migrationBuilder.DropTable(
name: "AspNetRoles");
migrationBuilder.DropTable(
name: "AspNetUsers");
}
}
}

View File

@ -1,17 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace api.Migrations
{
public partial class nova : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

View File

@ -9,8 +9,8 @@ using api.Data;
namespace api.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20190214193256_uo")]
partial class uo
[Migration("20190221000457_a")]
partial class a
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
@ -87,30 +87,6 @@ namespace api.Migrations
b.ToTable("AspNetUserTokens");
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<int>("EventLocId");
b.Property<int>("Pontos");
b.Property<string>("QRData");
b.Property<int>("TeamId");
b.Property<DateTime>("TimeGen");
b.HasKey("Id");
b.HasIndex("TeamId");
b.ToTable("EventQR");
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.Property<int>("Id")
@ -156,41 +132,41 @@ namespace api.Migrations
b.ToTable("AspNetRoles");
});
modelBuilder.Entity("api.Models.Team", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<string>("Nome");
b.Property<int>("NumMemb");
b.Property<int>("Pontos");
b.Property<int>("VisitedNum");
b.HasKey("Id");
b.ToTable("Teams");
});
modelBuilder.Entity("api.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("About");
b.Property<int>("AccessFailedCount");
b.Property<string>("Adress");
b.Property<int>("Age");
b.Property<string>("City");
b.Property<string>("Company");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken();
b.Property<string>("Country");
b.Property<string>("Degree");
b.Property<string>("Email")
.HasMaxLength(256);
b.Property<bool>("EmailConfirmed");
b.Property<string>("FullName");
b.Property<string>("Gender");
b.Property<DateTime>("LastLogin");
b.Property<bool>("LockoutEnabled");
b.Property<DateTimeOffset?>("LockoutEnd");
@ -203,21 +179,35 @@ namespace api.Migrations
b.Property<string>("PasswordHash");
b.Property<int>("Phone");
b.Property<string>("PhoneNumber");
b.Property<bool>("PhoneNumberConfirmed");
b.Property<string>("Position");
b.Property<string>("ProfileIcon");
b.Property<string>("QRcode");
b.Property<DateTime>("Registed");
b.Property<string>("Role");
b.Property<int>("SchoolYear");
b.Property<string>("SecurityStamp");
b.Property<int?>("TeamId");
b.Property<bool>("TwoFactorEnabled");
b.Property<string>("University");
b.Property<string>("UserName")
.HasMaxLength(256);
b.Property<string>("linkedIn");
b.HasKey("Id");
b.HasIndex("NormalizedEmail")
@ -227,8 +217,6 @@ namespace api.Migrations
.IsUnique()
.HasName("UserNameIndex");
b.HasIndex("TeamId");
b.ToTable("AspNetUsers");
});
@ -289,14 +277,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.HasOne("api.Models.Team")
.WithMany("QRs")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.HasOne("api.Models.User", "User")
@ -305,13 +285,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.User", b =>
{
b.HasOne("api.Models.Team")
.WithMany("Users")
.HasForeignKey("TeamId");
});
modelBuilder.Entity("api.Models.UserRole", b =>
{
b.HasOne("api.Models.Role", "Role")

View File

@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace api.Migrations
{
public partial class uo : Migration
public partial class a : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
@ -24,20 +24,48 @@ namespace api.Migrations
});
migrationBuilder.CreateTable(
name: "Teams",
name: "AspNetUsers",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Nome = table.Column<string>(nullable: true),
Event = table.Column<int>(nullable: false),
NumMemb = table.Column<int>(nullable: false),
VisitedNum = table.Column<int>(nullable: false),
Pontos = table.Column<int>(nullable: false)
UserName = table.Column<string>(maxLength: 256, nullable: true),
NormalizedUserName = table.Column<string>(maxLength: 256, nullable: true),
Email = table.Column<string>(maxLength: 256, nullable: true),
NormalizedEmail = table.Column<string>(maxLength: 256, nullable: true),
EmailConfirmed = table.Column<bool>(nullable: false),
PasswordHash = table.Column<string>(nullable: true),
SecurityStamp = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true),
PhoneNumber = table.Column<string>(nullable: true),
PhoneNumberConfirmed = table.Column<bool>(nullable: false),
TwoFactorEnabled = table.Column<bool>(nullable: false),
LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
LockoutEnabled = table.Column<bool>(nullable: false),
AccessFailedCount = table.Column<int>(nullable: false),
FullName = table.Column<string>(nullable: true),
Gender = table.Column<string>(nullable: true),
Age = table.Column<int>(nullable: false),
Phone = table.Column<int>(nullable: false),
University = table.Column<string>(nullable: true),
Adress = table.Column<string>(nullable: true),
Country = table.Column<string>(nullable: true),
City = table.Column<string>(nullable: true),
linkedIn = table.Column<string>(nullable: true),
LastLogin = table.Column<DateTime>(nullable: false),
Registed = table.Column<DateTime>(nullable: false),
QRcode = table.Column<string>(nullable: true),
Role = table.Column<string>(nullable: true),
Degree = table.Column<string>(nullable: true),
SchoolYear = table.Column<int>(nullable: false),
ProfileIcon = table.Column<string>(nullable: true),
Company = table.Column<string>(nullable: true),
Position = table.Column<string>(nullable: true),
About = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Teams", x => x.Id);
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
});
migrationBuilder.CreateTable(
@ -74,64 +102,6 @@ namespace api.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUsers",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
UserName = table.Column<string>(maxLength: 256, nullable: true),
NormalizedUserName = table.Column<string>(maxLength: 256, nullable: true),
Email = table.Column<string>(maxLength: 256, nullable: true),
NormalizedEmail = table.Column<string>(maxLength: 256, nullable: true),
EmailConfirmed = table.Column<bool>(nullable: false),
PasswordHash = table.Column<string>(nullable: true),
SecurityStamp = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true),
PhoneNumber = table.Column<string>(nullable: true),
PhoneNumberConfirmed = table.Column<bool>(nullable: false),
TwoFactorEnabled = table.Column<bool>(nullable: false),
LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
LockoutEnabled = table.Column<bool>(nullable: false),
AccessFailedCount = table.Column<int>(nullable: false),
QRcode = table.Column<string>(nullable: true),
TeamId = table.Column<int>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
table.ForeignKey(
name: "FK_AspNetUsers_Teams_TeamId",
column: x => x.TeamId,
principalTable: "Teams",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "EventQR",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Event = table.Column<int>(nullable: false),
TeamId = table.Column<int>(nullable: false),
EventLocId = table.Column<int>(nullable: false),
Pontos = table.Column<int>(nullable: false),
TimeGen = table.Column<DateTime>(nullable: false),
QRData = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_EventQR", x => x.Id);
table.ForeignKey(
name: "FK_EventQR_Teams_TeamId",
column: x => x.TeamId,
principalTable: "Teams",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AspNetUserClaims",
columns: table => new
@ -277,16 +247,6 @@ namespace api.Migrations
column: "NormalizedUserName",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_AspNetUsers_TeamId",
table: "AspNetUsers",
column: "TeamId");
migrationBuilder.CreateIndex(
name: "IX_EventQR_TeamId",
table: "EventQR",
column: "TeamId");
migrationBuilder.CreateIndex(
name: "IX_Photos_UserId",
table: "Photos",
@ -310,9 +270,6 @@ namespace api.Migrations
migrationBuilder.DropTable(
name: "AspNetUserTokens");
migrationBuilder.DropTable(
name: "EventQR");
migrationBuilder.DropTable(
name: "Photos");
@ -324,9 +281,6 @@ namespace api.Migrations
migrationBuilder.DropTable(
name: "AspNetUsers");
migrationBuilder.DropTable(
name: "Teams");
}
}
}

View File

@ -9,8 +9,8 @@ using api.Data;
namespace api.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20190214202719_nova")]
partial class nova
[Migration("20190221000551_c")]
partial class c
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
@ -87,30 +87,6 @@ namespace api.Migrations
b.ToTable("AspNetUserTokens");
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<int>("EventLocId");
b.Property<int>("Pontos");
b.Property<string>("QRData");
b.Property<int>("TeamId");
b.Property<DateTime>("TimeGen");
b.HasKey("Id");
b.HasIndex("TeamId");
b.ToTable("EventQR");
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.Property<int>("Id")
@ -156,26 +132,6 @@ namespace api.Migrations
b.ToTable("AspNetRoles");
});
modelBuilder.Entity("api.Models.Team", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<string>("Nome");
b.Property<int>("NumMemb");
b.Property<int>("Pontos");
b.Property<int>("VisitedNum");
b.HasKey("Id");
b.ToTable("Teams");
});
modelBuilder.Entity("api.Models.User", b =>
{
b.Property<int>("Id")
@ -211,8 +167,6 @@ namespace api.Migrations
b.Property<string>("SecurityStamp");
b.Property<int?>("TeamId");
b.Property<bool>("TwoFactorEnabled");
b.Property<string>("UserName")
@ -227,8 +181,6 @@ namespace api.Migrations
.IsUnique()
.HasName("UserNameIndex");
b.HasIndex("TeamId");
b.ToTable("AspNetUsers");
});
@ -289,14 +241,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.HasOne("api.Models.Team")
.WithMany("QRs")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.HasOne("api.Models.User", "User")
@ -305,13 +249,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.User", b =>
{
b.HasOne("api.Models.Team")
.WithMany("Users")
.HasForeignKey("TeamId");
});
modelBuilder.Entity("api.Models.UserRole", b =>
{
b.HasOne("api.Models.Role", "Role")

View File

@ -0,0 +1,181 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace api.Migrations
{
public partial class c : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "About",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Adress",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Age",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "City",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Company",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Country",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Degree",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "FullName",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Gender",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "LastLogin",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Phone",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Position",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "ProfileIcon",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Registed",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "Role",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "SchoolYear",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "University",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "linkedIn",
table: "AspNetUsers");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "About",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Adress",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "Age",
table: "AspNetUsers",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "City",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Company",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Country",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Degree",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "FullName",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Gender",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "LastLogin",
table: "AspNetUsers",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<int>(
name: "Phone",
table: "AspNetUsers",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "Position",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProfileIcon",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "Registed",
table: "AspNetUsers",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "Role",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "SchoolYear",
table: "AspNetUsers",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "University",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "linkedIn",
table: "AspNetUsers",
nullable: true);
}
}
}

View File

@ -85,30 +85,6 @@ namespace api.Migrations
b.ToTable("AspNetUserTokens");
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<int>("EventLocId");
b.Property<int>("Pontos");
b.Property<string>("QRData");
b.Property<int>("TeamId");
b.Property<DateTime>("TimeGen");
b.HasKey("Id");
b.HasIndex("TeamId");
b.ToTable("EventQR");
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.Property<int>("Id")
@ -154,26 +130,6 @@ namespace api.Migrations
b.ToTable("AspNetRoles");
});
modelBuilder.Entity("api.Models.Team", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Event");
b.Property<string>("Nome");
b.Property<int>("NumMemb");
b.Property<int>("Pontos");
b.Property<int>("VisitedNum");
b.HasKey("Id");
b.ToTable("Teams");
});
modelBuilder.Entity("api.Models.User", b =>
{
b.Property<int>("Id")
@ -209,8 +165,6 @@ namespace api.Migrations
b.Property<string>("SecurityStamp");
b.Property<int?>("TeamId");
b.Property<bool>("TwoFactorEnabled");
b.Property<string>("UserName")
@ -225,8 +179,6 @@ namespace api.Migrations
.IsUnique()
.HasName("UserNameIndex");
b.HasIndex("TeamId");
b.ToTable("AspNetUsers");
});
@ -287,14 +239,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.EventQR", b =>
{
b.HasOne("api.Models.Team")
.WithMany("QRs")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.Photo", b =>
{
b.HasOne("api.Models.User", "User")
@ -303,13 +247,6 @@ namespace api.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("api.Models.User", b =>
{
b.HasOne("api.Models.Team")
.WithMany("Users")
.HasForeignKey("TeamId");
});
modelBuilder.Entity("api.Models.UserRole", b =>
{
b.HasOne("api.Models.Role", "Role")

View File

@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
namespace api.Models
{
public class Event
{
public int Id{get;set;}
public string Nome{get;set;}
public string Desc{get;set;}
public ICollection<EventLoc> Locations{get;set;}
}
}

View File

@ -1,17 +0,0 @@
using System;
namespace api.Models
{
public class EventLoc
{
public int Id{get;set;}
public int Event{get;set;}
public string Nome{get;set;}
public double Lat{get;set;}
public double Long{get;set;}
public string Desc{get;set;}
public int PhotoId{get;set;}
}
}

View File

@ -1,16 +0,0 @@
using System;
namespace api.Models
{
public class EventLocVisited
{
public int Id{get;set;}
public int Event{get;set;}
public int TeamId{get;set;}
public String UserQR{get;set;}
public int QRId{get;set;}
public DateTime Time{get;set;}
}
}

View File

@ -1,18 +0,0 @@
using System;
namespace api.Models
{
public class EventQR
{
public int Id{get;set;}
public int Event{get;set;}
public int TeamId{get;set;}
public int EventLocId{get;set;}
public int Pontos{get;set;}
public DateTime TimeGen{get;set;}
public string QRData{get;set;}
}
}

View File

@ -8,6 +8,7 @@ namespace api.Models
public int Id{get;set;}
public string Url {get;set;}
public string Description{get;set;}
public DateTime DateAdded {get;set;}
public bool IsMain {get;set;}

View File

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
namespace api.Models
{
public class Team
{
public int Id{get;set;}
public string Nome{get;set;}
public int Event{get;set;}
public ICollection<User> Users{get;set;}
public int NumMemb{get;set;}
public int VisitedNum{get;set;}
public int Pontos{get;set;}
public ICollection<EventQR> QRs{get;set;}
}
}

View File

@ -7,7 +7,7 @@ namespace api.Models
{
public class User: IdentityUser<int>
{
public string QRcode{get;set;}
public string QRcode{get;set;}
public ICollection<UserRole> UserRoles{get;set;}
public ICollection<Photo> Photos {get;set;}

View File

@ -49,6 +49,7 @@ namespace api
//define a connection string indicada em appsettings.json
services.AddDbContext<DataContext>(x=>x.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
IdentityBuilder builder = services.AddIdentityCore<User>(Options=>
{
//mudar isto no fim por questoes de segurança
@ -113,7 +114,7 @@ namespace api
}
else
{
//globar exception handler
//globar exception handler
app.UseExceptionHandler(builder => {
builder.Run(async context => {
@ -132,11 +133,9 @@ namespace api
// app.UseHttpsRedirection();
//cores supporte
app.UseCors(x=>x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseStatusCodePagesWithReExecute("/Error/{0}");
app.UseStatusCodePagesWithReExecute("/error/{0}");
app.UseMvc();
app.UseCors(x=>x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseAuthentication();
app.UseMvc();
}
}
}

View File

@ -1 +0,0 @@
Not found :)

Some files were not shown because too many files have changed in this diff Show More