Merge remote-tracking branch 'origin/master' into zmiguel
|
@ -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')
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "27.0.3"
|
||||
minSdkVersion = 16
|
||||
minSdkVersion = 21
|
||||
compileSdkVersion = 27
|
||||
targetSdkVersion = 26
|
||||
supportLibVersion = "27.1.1"
|
||||
|
|
|
@ -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
|
|
@ -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'
|
||||
|
|
387
App/app/App.js
|
@ -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,10 +52,14 @@ 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 (
|
||||
|
||||
|
||||
//se não existir vai para o ecrã de scan QR
|
||||
return (
|
||||
|
||||
<QRCodeScanner
|
||||
ref={(node) => { this.scanner = node }}
|
||||
showMarker
|
||||
<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>
|
||||
|
||||
onRead={this.onSuccess.bind(this)}
|
||||
cameraStyle={{height: SCREEN_HEIGHT}}
|
||||
|
||||
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"/>
|
||||
<QRCodeScanner
|
||||
onRead={this.onSuccess}
|
||||
cameraStyle={ styles.cameraContainer}
|
||||
|
||||
|
||||
|
||||
|
||||
</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>
|
||||
</Modal>
|
||||
<View style={{ width:'100%',
|
||||
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',}}>
|
||||
<Image style={styles.logo2} source={require('./assets/img/logo2.png')}/>
|
||||
|
||||
</View>
|
||||
<View styles={styles.loginContainer}>
|
||||
|
||||
|
||||
<View style={styles.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 style={styles.inputSection}>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
}
|
||||
/>
|
||||
<TextInput
|
||||
style={styles.input}
|
||||
placeholder={this.state.username}
|
||||
onChangeText={(searchString) => {this.setState({searchString})}}
|
||||
maxLength={15}
|
||||
underlineColorAndroid="transparent"
|
||||
/>
|
||||
<TouchableOpacity onPress={this._scanQr}>
|
||||
|
||||
<View style={styles.scanQR}>
|
||||
|
||||
<Icon style={styles.searchIcon} name="ios-qr-scanner" size={30} color="#000"/>
|
||||
<Text>Scan QR</Text>
|
||||
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
|
||||
</View>
|
||||
|
||||
<TextInput style={styles.passwordInput}
|
||||
onFocus={this._print}
|
||||
maxLength={10}
|
||||
blurOnSubmit ={true}
|
||||
secureTextEntry={true}
|
||||
|
||||
onChangeText={(text) => this.setState({text})}
|
||||
clearButtonMode='always'
|
||||
value={this.state.text}
|
||||
clearTextOnFocus={true}
|
||||
onSubmitEditing={Keyboard.dismiss}
|
||||
placeholder='Password' />
|
||||
|
||||
<RkButton rkType='dark' style={styles.loginBtn} onPress={this._tryLogin}>Entrar</RkButton>
|
||||
|
||||
</View>
|
||||
|
||||
<View style={ styles.buttons }>
|
||||
<TouchableOpacity
|
||||
style={styles.button}>
|
||||
|
||||
<Icon name="logo-facebook" size={40}/>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
style={styles.button}>
|
||||
|
||||
<Icon name="logo-instagram" size={40}/>
|
||||
</TouchableOpacity>
|
||||
<TouchableOpacity
|
||||
style={styles.button}>
|
||||
|
||||
<Icon name="md-heart" size={40}/>
|
||||
|
||||
</TouchableOpacity>
|
||||
|
||||
</View>
|
||||
<View style={styles.footer}>
|
||||
<View style={styles.textRow}>
|
||||
|
||||
<RkText rkType='primary3'>Não sabes a password?</RkText>
|
||||
<RkButton rkType='clear' onPress={this.onSignUpButtonPressed}>
|
||||
|
||||
<TouchableOpacity>
|
||||
<RkText style={{color:'red'}} kType='header6'>Recuperar Password</RkText>
|
||||
</TouchableOpacity>
|
||||
|
||||
</RkButton>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
|
||||
);
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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: {
|
||||
|
@ -84,14 +81,25 @@ const AppStack = createBottomTabNavigator(
|
|||
},
|
||||
},
|
||||
|
||||
Home: {
|
||||
screen: Home,
|
||||
navigationOptions: {
|
||||
|
||||
tabBarIcon: ({tintColor}) => (
|
||||
<Icon name="ios-person" color={tintColor} size={30}/>
|
||||
)
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
|
||||
},
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
|
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 45 KiB |
|
@ -14,7 +14,7 @@ export const UtilStyles = StyleSheet.create({
|
|||
flex: 1,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
backgroundColor: '#F5FCFF',
|
||||
backgroundColor: 'white',
|
||||
},
|
||||
titleText: {
|
||||
fontSize: 20,
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
},
|
||||
},
|
||||
});
|
|
@ -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,
|
||||
|
@ -43,10 +43,10 @@ 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', {
|
||||
|
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
_update=()=>{
|
||||
if(this.props.token!= undefined)
|
||||
this.props.getUserInfo(this.props.token);
|
||||
|
||||
_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);
|
||||
}
|
||||
|
||||
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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
<Text> city: {this.props.user.City}</Text>
|
||||
<Text> phone: {this.props.user.Mobile}</Text>
|
||||
|
||||
</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 {
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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);
|
|
@ -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);
|
|
@ -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);
|
|
@ -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
|
|
@ -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,
|
||||
|
@ -69,6 +80,7 @@ const saveToken = async token => {
|
|||
obj.refreshToken = await AsyncStorage.getItem('refreshToken') || 'none';
|
||||
|
||||
|
||||
|
||||
} catch (error) {
|
||||
// Error retrieving data
|
||||
console.log(error.message);
|
||||
|
@ -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:''});
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
export {checkUser, login,getEvents, hold, getUserInfo,logoutUser} from "./api"
|
||||
export {openScannerLogin,closeLoginQRScan}from "./ui"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -14,3 +14,26 @@ 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
|
||||
|
||||
});
|
||||
}}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
@ -43,6 +56,7 @@ const apiReducer = (state = apiState, action) => {
|
|||
return state;
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
|
@ -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 };
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
function formatNumber(num) {
|
||||
return num > 999 ? `${(num / 1000).toFixed(1)}k` : num;
|
||||
}
|
||||
|
||||
export default formatNumber;
|
18
App/index.js
|
@ -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>
|
||||
);
|
||||
|
||||
|
|
508
App/ios/enei2019.xcodeproj/project.pbxproj → App/ios/app.xcodeproj/project.pbxproj
Executable file → Normal 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 */,
|
36
App/ios/enei2019.xcodeproj/xcshareddata/xcschemes/app-tvOS.xcscheme → App/ios/app.xcodeproj/xcshareddata/xcschemes/app-tvOS.xcscheme
Executable file → Normal 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>
|
36
App/ios/enei2019.xcodeproj/xcshareddata/xcschemes/app.xcscheme → App/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme
Executable file → Normal 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>
|
|
@ -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"/>
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
],
|
||||
|
|
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 6.0 KiB |
|
@ -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>
|
||||
|
|
|
@ -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": {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -36,8 +36,5 @@ namespace api.Controllers
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -10,5 +10,6 @@ namespace api.Data
|
|||
|
||||
Task<User> Login(string username, string password);
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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")
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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")
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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")
|
||||
|
|
|
@ -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;}
|
||||
|
||||
}
|
||||
}
|
|
@ -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;}
|
||||
}
|
||||
}
|
|
@ -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;}
|
||||
}
|
||||
}
|
|
@ -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;}
|
||||
}
|
||||
}
|
|
@ -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;}
|
||||
|
|
|
@ -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;}
|
||||
}
|
||||
}
|
|
@ -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;}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Not found :)
|
|
@ -1,132 +1 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt" xml:lang="pt">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport">
|
||||
<meta content="width" name="MobileOptimized">
|
||||
<meta content="true" name="HandheldFriendly">
|
||||
<!-- Place favicon.ico in the root directory -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<title>ENEI 2019</title>
|
||||
<meta name="description" content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial.">
|
||||
<meta property="og:locale" content="pt_PT" />
|
||||
<meta property="og:title" content="ENEI 2019" />
|
||||
<meta property="og:description" content="Página do Encontro Nacional de Estudantes de Informática 2019, no Instituto Superior de Engenharia de Coimbra (ISEC) a realizar-se entre 12 e 15 de abril de 2019. O ENEI pretende oferecer aos estudantes de todo o país um evento que promove a aprendizagem, a troca de ideias e o convívio, enquanto tenta criar fortes ligações com o mundo empresarial." />
|
||||
<meta property="og:site_name" content="ENEI 2019" />
|
||||
<meta property="og:url" content="http://www.enei.pt/" />
|
||||
<meta property="og:image" content="./imgs/share-image.jpg" />
|
||||
<meta property="og:type" content="Website" />
|
||||
<link rel="canonical" href="http://www.enei.pt/" />
|
||||
<link href="bootstrap-grid.css" rel="stylesheet" type="text/css" />
|
||||
<link href="main.css" rel="stylesheet" type="text/css" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Bai+Jamjuree:400,700" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header id="main-menu">
|
||||
<nav>
|
||||
<a href="#" title="Abrir menu" rel="nofollow" id="open-menu-mobile">Menu</a>
|
||||
<ul>
|
||||
<li><a href="#enei" title="Enei" rel="nofollow">Enei</a></li>
|
||||
<li class="unavailable">Oradores</li>
|
||||
<li class="unavailable">Programa</li>
|
||||
<li class="unavailable">Preços</li>
|
||||
<li class="unavailable">App</li>
|
||||
<li class="unavailable">Faq's</li>
|
||||
<li class="unavailable">Patrocinadores</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<!-- apresentation section -->
|
||||
<div id="apresentation">
|
||||
<img src="imgs/logo-enei.png" alt="Logótipo ENEI" width="3329" height="3106" class="logo-enei">
|
||||
</div>
|
||||
<!-- enei section -->
|
||||
<section id="enei">
|
||||
<div class="container">
|
||||
<div class="col-lg-5 col-sm-7">
|
||||
<div class="pre-h1">12 A 15 ABRIL DE 2019</div>
|
||||
<h1>ENEI</h1>
|
||||
<hr>
|
||||
<p>O Encontro Nacional de Estudantes de Informática é um dos maiores eventos na área da tecnologia em
|
||||
Portugal
|
||||
reunindo estudantes de informática de todas as faculdades do país.</p>
|
||||
<p>Reconhecido pela sua qualidade e variedade de temas e atividades, tem como prioridade o contacto
|
||||
entre
|
||||
participantes e empresas, bem como a socialização, o convívio e a troca de experiências e
|
||||
conhecimentos
|
||||
entre os presentes.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- count down section -->
|
||||
<aside id="countdown">
|
||||
<div>
|
||||
<span class="days"></span>
|
||||
<div class="smalltext">Dias</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="hours"></span>
|
||||
<div class="smalltext">Horas</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="minutes"></span>
|
||||
<div class="smalltext">Minutos</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="seconds"></span>
|
||||
<div class="smalltext">Segundos</div>
|
||||
</div>
|
||||
</aside>
|
||||
<!-- available soon section -->
|
||||
<section id="available-soon">
|
||||
<div class="container">
|
||||
<div class="col-lg-6 col-lg-offset-3">
|
||||
<h1>Mais informações, brevemente disponíveis</h1>
|
||||
<div id="wave">
|
||||
<span class="dot"></span>
|
||||
<span class="dot"></span>
|
||||
<span class="dot"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- social network section -->
|
||||
<aside id="social-network">
|
||||
<div class="container">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h1>Fala Connosco</h1>
|
||||
<ul>
|
||||
<li><a href="https://www.facebook.com/ENEIConf/" title="Facebook" target="_blank" class="icon-facebook"></a></li>
|
||||
<li><a href="https://www.instagram.com/eneiconf/" title="Instagram" target="_blank" class="icon-instagram"></a></li>
|
||||
<li><a href="https://www.linkedin.com/company/enei/" title="Linkedin" target="_blank" class="icon-linkedin"></a></li>
|
||||
<li><a href="mailto:geral@enei.pt" title="Email" target="_blank" class="icon-email"></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
<!-- footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="col-lg-12">
|
||||
<p>© 2018 ENEI . Todos os direitos reservados</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="js/scripts.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
lols
|