calendário update
This commit is contained in:
parent
1c4df5dee5
commit
e36614b55f
|
@ -149,6 +149,7 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
compile project(':react-native-device-info')
|
||||
compile project(':react-native-material-shadows')
|
||||
compile project(':react-native-linear-gradient')
|
||||
compile project(':react-native-camera')
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.app;
|
|||
import android.app.Application;
|
||||
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.learnium.RNDeviceInfo.RNDeviceInfo;
|
||||
import ui.materialshadows.RNMaterialShadowsPackage;
|
||||
import com.BV.LinearGradient.LinearGradientPackage;
|
||||
import org.reactnative.camera.RNCameraPackage;
|
||||
|
@ -28,6 +29,7 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
protected List<ReactPackage> getPackages() {
|
||||
return Arrays.<ReactPackage>asList(
|
||||
new MainReactPackage(),
|
||||
new RNDeviceInfo(),
|
||||
new RNMaterialShadowsPackage(),
|
||||
new LinearGradientPackage(),
|
||||
new RNCameraPackage(),
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
rootProject.name = 'app'
|
||||
include ':react-native-device-info'
|
||||
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
|
||||
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'
|
||||
|
|
|
@ -40,12 +40,16 @@ const SCREEN_HEIGHT = Dimensions.get("window").height;
|
|||
const SCREEN_WIDTH = Dimensions.get("window").width;
|
||||
|
||||
import Swiper from 'react-native-swiper';
|
||||
var TimerMixin = require('react-timer-mixin');
|
||||
|
||||
function handleConnectivityChange() {
|
||||
console.log("asdasd");
|
||||
}
|
||||
|
||||
class App extends Component {
|
||||
|
||||
handleConnectivityChange = isConnected => {
|
||||
this.setState({ isConnected });
|
||||
}
|
||||
_activate=()=>{
|
||||
|
||||
this.setState({ isModalVisible: !this.state.isModalVisible});
|
||||
|
@ -85,8 +89,8 @@ class App extends Component {
|
|||
failedAttempt: false,
|
||||
push:4,
|
||||
UI_loginScannerActive:false,
|
||||
userDetails:{username:'', password:''}
|
||||
|
||||
userDetails:{username:'', password:''},
|
||||
isConnected: true
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -103,8 +107,8 @@ class App extends Component {
|
|||
|
||||
|
||||
componentDidMount() {
|
||||
|
||||
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
|
||||
this.props.hold();
|
||||
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
|
||||
|
||||
this.setState({isModalVisible: false})
|
||||
//verifica se o utilizador tem token guardado
|
||||
|
@ -115,7 +119,7 @@ class App extends Component {
|
|||
|
||||
}
|
||||
componentWillUnmount() {
|
||||
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
|
||||
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
|
||||
}
|
||||
|
||||
_keyboardDidShow () {
|
||||
|
@ -131,9 +135,9 @@ class App extends Component {
|
|||
}
|
||||
onSuccess = (e) => {
|
||||
|
||||
// this.setState({ isModalVisible: !this.state.isModalVisible });
|
||||
// this.props.login(e.data, 'f8908cc0');
|
||||
this.props.closeLoginQRScan();
|
||||
// this.setState({ isModalVisible: !this.state.isModalVisible });
|
||||
// this.props.login(e.data, 'f8908cc0');
|
||||
this.props.closeLoginQRScan();
|
||||
this.setState({username:e.data})
|
||||
|
||||
console.log("QR code lido");
|
||||
|
@ -143,7 +147,13 @@ class App extends Component {
|
|||
};
|
||||
|
||||
render() {
|
||||
|
||||
if (!this.state.isConnected) {
|
||||
return (
|
||||
<View>
|
||||
<Text>cenas da vida</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
if (!this.props.logged && this.props.onHold) {
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,8 @@ import {
|
|||
StyleSheet,
|
||||
Image,
|
||||
ImageBackground,
|
||||
NetInfo
|
||||
NetInfo,
|
||||
AppState
|
||||
} from 'react-native';
|
||||
|
||||
import {Shadow} from 'react-native-shadow'
|
||||
|
@ -38,10 +39,14 @@ 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 {
|
||||
|
||||
_handleConnectionChange = (isConnected) => {
|
||||
// this.props.dispatch(connectionState({ status: isConnected }));
|
||||
console.log("fck that")
|
||||
};
|
||||
_refresh() {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(()=>{resolve()}, 2000)
|
||||
|
@ -61,21 +66,26 @@ class Home extends Component {
|
|||
logged: true,
|
||||
onHold: true,
|
||||
user: {Name: ''},
|
||||
userDetails:{}
|
||||
userDetails:{},
|
||||
appState: AppState.currentState,
|
||||
};
|
||||
}
|
||||
handleConnectivityChange = () => {
|
||||
handleConnectivityChange = () => {
|
||||
console.log("asdasdasdasdasd");
|
||||
}
|
||||
componentDidMount() {
|
||||
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
|
||||
|
||||
this.props.hold();
|
||||
componentDidMount() {
|
||||
|
||||
// NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange);
|
||||
|
||||
// this.props.hold();
|
||||
console.log("hold"+ this.props.onHold)
|
||||
//this.props.logoutUser();
|
||||
|
||||
//console.log(this.props.token);
|
||||
|
||||
this.props.getUserInfo(this.props.userDetails.token);
|
||||
|
||||
// this.props.getUserInfo(this.props.userDetails.token);
|
||||
|
||||
|
||||
//console.log('logged:'+this.props.logged);
|
||||
|
@ -86,7 +96,7 @@ class Home extends Component {
|
|||
|
||||
}
|
||||
componentWillUnmount() {
|
||||
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange);
|
||||
|
||||
}
|
||||
|
||||
bClick() {
|
||||
|
@ -102,8 +112,8 @@ class Home extends Component {
|
|||
//var navigate = this.props.navigation.navigate
|
||||
}
|
||||
_update=()=>{
|
||||
if(this.props.token!= undefined)
|
||||
this.props.getUserInfo(this.props.token);
|
||||
|
||||
this.props.getUserInfo(this.props.userDetails.token);
|
||||
|
||||
}
|
||||
|
||||
|
@ -345,6 +355,7 @@ function mapStateToProps(state, props) {
|
|||
user: state.apiReducer.user,
|
||||
logged: state.apiReducer.logged,
|
||||
userDetails: state.apiReducer.userDetails,
|
||||
onHold: state.apiReducer.onHold
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,9 @@ class choosePath extends React.Component {
|
|||
|
||||
]
|
||||
}
|
||||
|
||||
getCareerPaths=()=>{
|
||||
this.props.getAvailableGuestlists(this.props.userDetails.token)
|
||||
}
|
||||
render() {
|
||||
let data = [{
|
||||
value: 'Desenvolvimento Web',
|
||||
|
@ -90,12 +92,15 @@ class choosePath extends React.Component {
|
|||
}];
|
||||
|
||||
return (
|
||||
<View style={{width:SCREEN_WIDTH*0.7}}>
|
||||
<View style={{flex:1,width:SCREEN_WIDTH*0.7, alignContent:'center'}}>
|
||||
|
||||
<Dropdown
|
||||
label='Career Path'
|
||||
data={data}
|
||||
|
||||
/>
|
||||
|
||||
<Button onPress={this.getCareerPaths} title="teste"/>
|
||||
</View>
|
||||
|
||||
);
|
||||
|
@ -182,7 +187,9 @@ function mapStateToProps(state, props) {
|
|||
token: state.apiReducer.token,
|
||||
user: state.apiReducer.user,
|
||||
logged: state.apiReducer.logged,
|
||||
events: state.apiReducer.events
|
||||
events: state.apiReducer.events,
|
||||
userDetails: state.apiReducer.userDetails
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ export const LOGOUT_USER= 'LOGOUT_USER';
|
|||
export const USER_INFO= 'USER_INFO'
|
||||
export const HOLD='HOLD'
|
||||
export const GET_EVENTS='GET_EVENTS'
|
||||
|
||||
export const GET_CAREERS='GET_CAREERS'
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
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 { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS, GET_CAREERS } from "./actionTypes" //Import the actions types constant we defined in our actions
|
||||
|
||||
import moment from 'moment'
|
||||
|
||||
import { compose } from 'redux';
|
||||
|
||||
const axios = require('axios');
|
||||
|
||||
|
||||
|
||||
export const connectionState = (status) => {
|
||||
console.log(status);
|
||||
|
@ -16,34 +20,75 @@ export const connectionState = (status) => {
|
|||
|
||||
|
||||
|
||||
export function getEvents(user){
|
||||
|
||||
///Attendee/AvailableGuestlists
|
||||
|
||||
|
||||
const apiBaseUrl= 'https://tickets.enei.pt/internal/api'
|
||||
|
||||
export function getAvailableGuestlists(token){
|
||||
|
||||
axios.defaults.baseURL = 'http://enei2019.uingress.com/internal/api'
|
||||
axios.defaults.headers.common = {'Authorization': `bearer ${token.access_token}`}
|
||||
|
||||
|
||||
let completeUrl= apiBaseUrl + "/Attendee/AvailableGuestlists";
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
console.log(completeUrl)
|
||||
axios.get('/Attendee/AvailableGuestlists')
|
||||
.then(function (response) {
|
||||
|
||||
// handle success
|
||||
console.log(response);
|
||||
dispatch({
|
||||
type: GET_CAREERS,
|
||||
//events: events
|
||||
|
||||
});
|
||||
})
|
||||
.catch(function (error) {
|
||||
// handle error
|
||||
console.log(error);
|
||||
})
|
||||
.then(function () {
|
||||
// always executed
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function getEvents(user){
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
let events = [];
|
||||
console.log("chegou aqui")
|
||||
|
||||
|
||||
for(let key in user.Sessions){
|
||||
for(let key in user.Sessions){
|
||||
|
||||
events.push({
|
||||
time: moment(user.Sessions[key].SessionStart).format('h:mm'),
|
||||
timeEnd: moment(user.Sessions[key].SessionEnd).format('h:mm'),
|
||||
//lineColor:'#009688',
|
||||
imageUrl: 'https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/Vjkyj2hBg/welcome-white-sign-with-falling-colorful-confetti-animation-on-white-background_sglmmh3qm__F0013.png',
|
||||
description:user.Sessions[key].Description,
|
||||
name:user.Sessions[key].Name,
|
||||
Enrolled:user.Sessions[key].Enrolled,
|
||||
MaxAttendees:user.Sessions[key].MaxAttendees
|
||||
events.push({
|
||||
time: moment(user.Sessions[key].SessionStart).format('h:mm'),
|
||||
timeEnd: moment(user.Sessions[key].SessionEnd).format('h:mm'),
|
||||
//lineColor:'#009688',
|
||||
imageUrl: 'https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/Vjkyj2hBg/welcome-white-sign-with-falling-colorful-confetti-animation-on-white-background_sglmmh3qm__F0013.png',
|
||||
description:user.Sessions[key].Description,
|
||||
name:user.Sessions[key].Name,
|
||||
Enrolled:user.Sessions[key].Enrolled,
|
||||
MaxAttendees:user.Sessions[key].MaxAttendees
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dispatch({
|
||||
dispatch({
|
||||
type: GET_EVENTS,
|
||||
events: events
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const saveToken = async token => {
|
||||
|
@ -87,9 +132,11 @@ const saveToken = async token => {
|
|||
console.log(error.message);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const deleteToken = async () => {
|
||||
|
||||
try {
|
||||
await AsyncStorage.removeItem('userToken');
|
||||
await AsyncStorage.removeItem('expirationDateToken');
|
||||
|
@ -216,13 +263,14 @@ export function hold(){
|
|||
|
||||
export function getUserInfo(token){
|
||||
|
||||
|
||||
|
||||
return (dispatch)=>{
|
||||
|
||||
//TODO: verificar validade do token
|
||||
|
||||
console.log('Chamada "getUserInfo"');
|
||||
|
||||
|
||||
var obj = {
|
||||
|
||||
method: 'GET',
|
||||
|
@ -399,34 +447,41 @@ function refreshToken(){
|
|||
}).then(res=>res.json()).then(parsed=>{
|
||||
|
||||
if(parsed.error_description=="Provided username and password is incorrect"){
|
||||
throw "error";
|
||||
|
||||
console.error("cenas da vida")
|
||||
|
||||
}
|
||||
var obj={
|
||||
access_token:parsed.access_token,
|
||||
expirationDateToken:Math.round(new Date().getTime()/1000) + 3598,
|
||||
refreshToken:parsed.refresh_token,
|
||||
valid:true
|
||||
};
|
||||
else{
|
||||
|
||||
|
||||
console.log(parsed)
|
||||
|
||||
return obj;
|
||||
var obj={
|
||||
access_token:parsed.access_token,
|
||||
expirationDateToken:Math.round(new Date().getTime()/1000) + 3598,
|
||||
refreshToken:parsed.refresh_token,
|
||||
valid:true
|
||||
};
|
||||
|
||||
|
||||
go();
|
||||
return obj;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
go=(t)=>{
|
||||
dispatch({type: CHECK_USER, logged:true, onHold:false, user:{Name:'Henrique'}, token:t});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
export function checkUser(userDetails){
|
||||
var u= userDetails;
|
||||
return (dispatch)=>{
|
||||
|
@ -444,20 +499,69 @@ export function checkUser(userDetails){
|
|||
if(Math.round(new Date().getTime()/1000) >= userDetails.token.expirationDateToken){
|
||||
|
||||
|
||||
//se tiver expirado
|
||||
refreshLogin().then(a=>{
|
||||
var details = {
|
||||
'username': userDetails.username,
|
||||
'password': userDetails.password,
|
||||
'grant_type': 'password'
|
||||
};
|
||||
|
||||
var formBody = [];
|
||||
|
||||
for (var property in details) {
|
||||
|
||||
console.log("tentativa de relogin")
|
||||
|
||||
dispatch({type: CHECK_USER, logged:true, onHold:false, user:{Name:'Henrique'}, userDetails:u});
|
||||
|
||||
}).catch(b=>{
|
||||
|
||||
console.log("error");
|
||||
|
||||
dispatch({type: CHECK_USER,logged:false, onHold:false,userDetails:u});
|
||||
})
|
||||
|
||||
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
|
||||
|
||||
}).catch(err=>{
|
||||
|
||||
console.log(err);
|
||||
|
||||
alert("error");
|
||||
|
||||
|
||||
}).then(res=>res.json()).then(parsed=>{
|
||||
|
||||
if(parsed.error_description=="Provided username and password is incorrect"){
|
||||
|
||||
console.error("cenas da vida")
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
console.log(parsed)
|
||||
|
||||
var obj={
|
||||
access_token:parsed.access_token,
|
||||
expirationDateToken:Math.round(new Date().getTime()/1000) + 3598,
|
||||
refreshToken:parsed.refresh_token,
|
||||
valid:true
|
||||
};
|
||||
|
||||
dispatch({type: CHECK_USER, logged:true, onHold:false, userDetails:u,token:obj});
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
)
|
||||
}else{
|
||||
console.log("Tempo restante token: "+ Math.round((userDetails.token.expirationDateToken-Math.round(new Date().getTime()/1000) )/60) +" Minutos");
|
||||
|
||||
|
@ -474,55 +578,4 @@ export function checkUser(userDetails){
|
|||
dispatch({type: CHECK_USER,logged:false, onHold:false,userDetails:u});
|
||||
//dispatch menu de login
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
getToken().then(a=>{
|
||||
|
||||
|
||||
if(a.access_token=='none'){
|
||||
|
||||
a.valid=false;
|
||||
|
||||
console.log('token não existe em memória')
|
||||
|
||||
dispatch({type: CHECK_USER,token:a,logged:false, onHold:false});
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
a.valid=true;
|
||||
|
||||
console.log('Existe Token em memória :'+ a.refreshToken )
|
||||
|
||||
//se expirar
|
||||
if(Math.round(new Date().getTime()/1000) >= a.expirationDateToken){
|
||||
|
||||
refreshLogin(user, pass).then(a=>{
|
||||
console.log("refreseh")
|
||||
})
|
||||
|
||||
|
||||
|
||||
}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'}});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}).catch(a=>{
|
||||
|
||||
console.log('erro a ler o token'+ a);
|
||||
dispatch({type: CHECK_USER,token:false, logged:false, user:''});
|
||||
})
|
||||
|
||||
*/
|
||||
}}
|
|
@ -1,4 +1,4 @@
|
|||
export {checkUser, login,getEvents, hold, getUserInfo,logoutUser} from "./api"
|
||||
export {checkUser, login,getEvents, hold, getUserInfo,logoutUser,getAvailableGuestlists} from "./api"
|
||||
export {openScannerLogin,closeLoginQRScan}from "./ui"
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
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 { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS, GET_CAREERS } from "../actions/actionTypes" //Import the actions types constant we defined in our actions
|
||||
import { REHYDRATE } from 'redux-persist';
|
||||
|
||||
let apiState= {
|
||||
|
@ -29,14 +29,29 @@ const apiReducer = (state = apiState, action) => {
|
|||
|
||||
console.log( action.payload)
|
||||
|
||||
var expirationDateTokenA=0;
|
||||
var access_tokenA='';
|
||||
|
||||
if(action.payload.apiReducer.userDetails.token!=undefined){
|
||||
if(action.payload.apiReducer.userDetails.token.expirationDateToken!= undefined){
|
||||
|
||||
expirationDateTokenA= action.payload.apiReducer.userDetails.token.expirationDateToken;
|
||||
}
|
||||
if((action.payload.apiReducer.userDetails.token.access_token!= undefined)){
|
||||
|
||||
access_tokenA= action.payload.apiReducer.userDetails.token.access_token;
|
||||
|
||||
}
|
||||
}
|
||||
return {
|
||||
|
||||
|
||||
// token: action.payload.apiReducer.token,
|
||||
user: action.payload.apiReducer.user,
|
||||
|
||||
userDetails:{
|
||||
token:{
|
||||
expirationDateToken:action.payload.apiReducer.userDetails.token.expirationDateToken,
|
||||
access_token:action.payload.apiReducer.userDetails.token.access_token,
|
||||
expirationDateToken: expirationDateTokenA,
|
||||
access_token:access_tokenA,
|
||||
|
||||
},
|
||||
username:action.payload.apiReducer.userDetails.username,
|
||||
|
@ -47,6 +62,11 @@ const apiReducer = (state = apiState, action) => {
|
|||
return Object.assign({}, state, {
|
||||
isConnected: action.isConnected,
|
||||
});
|
||||
|
||||
case GET_CAREERS:
|
||||
|
||||
state=Object.assign({},state, { });
|
||||
return state;
|
||||
|
||||
case HOLD:
|
||||
|
||||
|
@ -58,7 +78,7 @@ const apiReducer = (state = apiState, action) => {
|
|||
|
||||
state=Object.assign({},state, {
|
||||
logged:action.logged,
|
||||
token:action.token,
|
||||
//token:action.token,
|
||||
failedAttempt: action.failedAttempt,
|
||||
user:action.user,
|
||||
userDetails: {token:action.token, username:action.userDetails.username, password:action.userDetails.password},
|
||||
|
@ -69,14 +89,17 @@ const apiReducer = (state = apiState, action) => {
|
|||
return state;
|
||||
|
||||
case CHECK_USER:
|
||||
|
||||
state=Object.assign({},state, { token:action.token,logged:action.logged, onHold:action.onHold});
|
||||
|
||||
var u= action.userDetails;
|
||||
u.token= action.token;
|
||||
|
||||
state=Object.assign({},state, {logged:action.logged, onHold:action.onHold, userDetails:u });
|
||||
|
||||
return state;
|
||||
|
||||
case LOGOUT_USER:
|
||||
|
||||
state=Object.assign({},state, { token:action.token, logged:false});
|
||||
state=Object.assign({},state, { logged:false});
|
||||
|
||||
return state;
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
|
||||
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
|
||||
|
@ -59,6 +58,8 @@
|
|||
BE5EAB86221B7D5400E92E5B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE5EAB77221B7D5400E92E5B /* Zocial.ttf */; };
|
||||
BE5EAC3A221B83CF00E92E5B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BE302B75221B7C3B005626CF /* Ionicons.ttf */; };
|
||||
BE5EAC41221B889900E92E5B /* libReactNativePermissions.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE5EAC40221B888C00E92E5B /* libReactNativePermissions.a */; };
|
||||
4EBB88037B054A508BF35245 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F42241E0235464C91B24049 /* libRNDeviceInfo.a */; };
|
||||
E677346A94D54E90817979B0 /* libRNDeviceInfo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
@ -436,6 +437,9 @@
|
|||
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>"; };
|
||||
5BA133418E6F4967BC5BC234 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; name = "RNDeviceInfo.xcodeproj"; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
|
||||
0F42241E0235464C91B24049 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; name = "libRNDeviceInfo.a"; path = "libRNDeviceInfo.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
|
||||
3C4D43A092A4408B91B32E76 /* libRNDeviceInfo-tvOS.a */ = {isa = PBXFileReference; name = "libRNDeviceInfo-tvOS.a"; path = "libRNDeviceInfo-tvOS.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -468,6 +472,7 @@
|
|||
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
|
||||
BE104176D74E47E9A369B15A /* libRNVectorIcons.a in Frameworks */,
|
||||
69E1B84AE0DF486CB1B1D226 /* libBVLinearGradient.a in Frameworks */,
|
||||
4EBB88037B054A508BF35245 /* libRNDeviceInfo.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -484,6 +489,7 @@
|
|||
2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
|
||||
2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
|
||||
514DB1DF2E3B452F9EF272E3 /* libRNVectorIcons-tvOS.a in Frameworks */,
|
||||
E677346A94D54E90817979B0 /* libRNDeviceInfo-tvOS.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -660,6 +666,7 @@
|
|||
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
|
||||
664970B9D10A41A18B44727F /* RNVectorIcons.xcodeproj */,
|
||||
1908F5E093844AC5A143E888 /* BVLinearGradient.xcodeproj */,
|
||||
5BA133418E6F4967BC5BC234 /* RNDeviceInfo.xcodeproj */,
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
|
@ -1442,6 +1449,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = appTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
|
@ -1451,6 +1459,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
@ -1471,6 +1481,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = appTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
|
@ -1480,6 +1491,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
@ -1502,6 +1515,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = app/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
|
@ -1526,6 +1540,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = app/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
|
@ -1556,6 +1571,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = "app-tvOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
|
@ -1564,6 +1580,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
@ -1593,6 +1611,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = "app-tvOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
|
@ -1601,6 +1620,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
@ -1629,6 +1650,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
|
@ -1637,6 +1659,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
@ -1665,6 +1689,7 @@
|
|||
"$(inherited)",
|
||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
||||
"$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient",
|
||||
"$(SRCROOT)/../node_modules/react-native-device-info/ios/RNDeviceInfo",
|
||||
);
|
||||
INFOPLIST_FILE = "app-tvOSTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
|
@ -1673,6 +1698,8 @@
|
|||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
|
|
|
@ -7816,6 +7816,11 @@
|
|||
"prop-types": "^15.5.10"
|
||||
}
|
||||
},
|
||||
"react-native-device-info": {
|
||||
"version": "0.26.4",
|
||||
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-0.26.4.tgz",
|
||||
"integrity": "sha512-gQo/hSk26E/gK0W3QvkSv+mrBbceFszezxLfUriK3JbiUwvaOlXm6kru2jAu1XGJzfxo/JUO0Mc0lopqiPgw+A=="
|
||||
},
|
||||
"react-native-elements": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-1.0.0.tgz",
|
||||
|
@ -7950,6 +7955,11 @@
|
|||
"react-native-animatable": "^1.2.4"
|
||||
}
|
||||
},
|
||||
"react-native-network-info": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-network-info/-/react-native-network-info-4.0.1.tgz",
|
||||
"integrity": "sha512-ZeSkeBL/fHsFR6sAOVHMd4oMknCwsbEeL+Zewec1/3ielg8k9YcddK3wymXS7kvwV0mTB2ji4X5tI0b7XY0sDA=="
|
||||
},
|
||||
"react-native-permissions": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-1.1.1.tgz",
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
"react-native-app-intro-slider": "^1.0.1",
|
||||
"react-native-camera": "^1.9.2",
|
||||
"react-native-confirmation-code-input": "^1.0.4",
|
||||
"react-native-device-info": "^0.26.4",
|
||||
"react-native-elements": "^1.0.0",
|
||||
"react-native-fit-image": "^1.5.4",
|
||||
"react-native-gesture-handler": "^1.0.15",
|
||||
|
@ -30,6 +31,7 @@
|
|||
"react-native-material-dropdown": "^0.11.1",
|
||||
"react-native-material-shadows": "0.0.2",
|
||||
"react-native-modal": "^7.0.2",
|
||||
"react-native-network-info": "^4.0.1",
|
||||
"react-native-offline": "^4.3.0",
|
||||
"react-native-progress": "^3.5.0",
|
||||
"react-native-pull-to-refresh": "^2.1.3",
|
||||
|
@ -42,6 +44,7 @@
|
|||
"react-native-vector-icons": "^6.1.0",
|
||||
"react-navigation": "^3.0.9",
|
||||
"react-redux": "^6.0.0",
|
||||
"react-timer-mixin": "^0.13.4",
|
||||
"redux": "^4.0.1",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-persist": "^5.10.0",
|
||||
|
|
Loading…
Reference in New Issue