This commit is contained in:
parent
40a2b1199d
commit
b156bb6518
|
@ -43,12 +43,15 @@ import eventDetail from './screens/eventDetail';
|
||||||
|
|
||||||
import teamDetail from './screens/teamDetail';
|
import teamDetail from './screens/teamDetail';
|
||||||
|
|
||||||
|
import event from './screens/event';
|
||||||
|
|
||||||
const navigationOptions = ({navigation}) => ({
|
const navigationOptions = ({navigation}) => ({
|
||||||
headerLeft: <HeaderBackButton onPress={() => navigation.goBack(null)}/>,
|
headerLeft: <HeaderBackButton onPress={() => navigation.goBack(null)}/>,
|
||||||
headerStyle: {backgroundColor: 'transparent', zIndex: 100 },
|
headerStyle: {backgroundColor: 'transparent', zIndex: 100 },
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const AppStack = createBottomTabNavigator(
|
const AppStack = createBottomTabNavigator(
|
||||||
{
|
{
|
||||||
Calendário: {
|
Calendário: {
|
||||||
|
@ -62,7 +65,7 @@ const AppStack = createBottomTabNavigator(
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
'Jogo do...': {
|
'Jogo': {
|
||||||
screen: Jogo,
|
screen: Jogo,
|
||||||
|
|
||||||
navigationOptions: {
|
navigationOptions: {
|
||||||
|
@ -137,14 +140,14 @@ const Stack = createStackNavigator({
|
||||||
<TouchableOpacity style={{marginRight: 20, flex: 1, flexDirection: 'row'}}
|
<TouchableOpacity style={{marginRight: 20, flex: 1, flexDirection: 'row'}}
|
||||||
onPress={() => navigation.navigate('Profile')}>
|
onPress={() => navigation.navigate('Profile')}>
|
||||||
|
|
||||||
<Text>Editar dados</Text>
|
<Text style={{marginRight:5}}>Editar dados</Text>
|
||||||
<IconFA name="user-edit" size={22}/>
|
<IconFA name="user-edit" size={22}/>
|
||||||
|
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (navigation.state.routes[index].routeName == 'Jogo do...') {
|
if (navigation.state.routes[index].routeName == 'Jogo') {
|
||||||
return {
|
return {
|
||||||
header: (<View style={{backgroundColor:'#CC1A17', padding:15}}>
|
header: (<View style={{backgroundColor:'#CC1A17', padding:15}}>
|
||||||
<Text style={{textAlign:'center', alignSelf:'center', color:'white', fontSize:20, fontWeight:'bold'}}>Jogo do ENEI'19</Text>
|
<Text style={{textAlign:'center', alignSelf:'center', color:'white', fontSize:20, fontWeight:'bold'}}>Jogo do ENEI'19</Text>
|
||||||
|
@ -164,8 +167,8 @@ const Stack = createStackNavigator({
|
||||||
|
|
||||||
<TouchableOpacity style={{marginRight: 20, flex: 1, flexDirection: 'row'}}
|
<TouchableOpacity style={{marginRight: 20, flex: 1, flexDirection: 'row'}}
|
||||||
onPress={() => navigation.navigate('choosePath')}>
|
onPress={() => navigation.navigate('choosePath')}>
|
||||||
<Text>Inscrições</Text>
|
<Text style={{color:'#CC1A17', marginRight:5}}>Inscrições</Text>
|
||||||
<IconFA name="user-edit" size={22}/>
|
<IconFA name="user-edit" size={22} color={'#CC1A17'}/>
|
||||||
</TouchableOpacity></View>
|
</TouchableOpacity></View>
|
||||||
|
|
||||||
)
|
)
|
||||||
|
@ -225,6 +228,9 @@ const Stack = createStackNavigator({
|
||||||
|
|
||||||
resetPassword:{
|
resetPassword:{
|
||||||
screen:resetPassword
|
screen:resetPassword
|
||||||
|
},
|
||||||
|
event:{
|
||||||
|
screen: event
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,184 +1,186 @@
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
View,
|
View,
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
Dimensions,
|
Dimensions,
|
||||||
Text,
|
Text,
|
||||||
Button,
|
Button,
|
||||||
ScrollView,
|
ScrollView,
|
||||||
Image,
|
Image,
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
FlatList,
|
FlatList,
|
||||||
ActivityIndicator
|
ActivityIndicator
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
|
|
||||||
import {TabView, TabBar, SceneMap} from "react-native-tab-view";
|
import { TabView, TabBar, SceneMap } from "react-native-tab-view";
|
||||||
|
|
||||||
import rallyImg from '../assets/rallyTascas.jpg';
|
import rallyImg from "../assets/rallyTascas.jpg";
|
||||||
|
|
||||||
import {connect} from "react-redux";
|
import { connect } from "react-redux";
|
||||||
|
|
||||||
import {bindActionCreators} from "redux";
|
import { bindActionCreators } from "redux";
|
||||||
|
|
||||||
import * as Actions from "../store/actions"; //Import your actionss
|
import * as Actions from "../store/actions"; //Import your actionss
|
||||||
const SCREEN_HEIGHT = Dimensions.get("window").height;
|
const SCREEN_HEIGHT = Dimensions.get("window").height;
|
||||||
const SCREEN_WIDTH = Dimensions.get("window").width;
|
const SCREEN_WIDTH = Dimensions.get("window").width;
|
||||||
|
|
||||||
|
|
||||||
import PTRView from "react-native-pull-to-refresh";
|
import PTRView from "react-native-pull-to-refresh";
|
||||||
|
|
||||||
class Eventos extends React.Component {
|
class Eventos extends React.Component {
|
||||||
|
_update = () => {
|
||||||
_update=()=> {
|
|
||||||
this.props.getAllEvents(this.props.internalToken);
|
this.props.getAllEvents(this.props.internalToken);
|
||||||
this.props.getEventLocsVisited(this.props.team.id,this.props.internalToken);
|
this.props.getEventLocsVisited(
|
||||||
}
|
this.props.team.id,
|
||||||
state = {
|
this.props.internalToken
|
||||||
index: 0,
|
);
|
||||||
routes: [
|
};
|
||||||
{key: "first", title: "Festarola"},
|
state = {
|
||||||
{key: "second", title: "Febrada"},
|
index: 0,
|
||||||
{key: "third", title: "Rally"},
|
routes: [
|
||||||
{key: "fourth", title: "Peddy"}
|
{ key: "first", title: "Festarola" },
|
||||||
]
|
{ key: "second", title: "Febrada" },
|
||||||
};
|
{ key: "third", title: "Rally" },
|
||||||
|
{ key: "fourth", title: "Peddy" }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
this.props.getAllEvents(this.props.internalToken);
|
this.props.getAllEvents(this.props.internalToken);
|
||||||
this.props.getEventLocsVisited(this.props.team.id,this.props.internalToken);
|
this.props.getEventLocsVisited(
|
||||||
}
|
this.props.team.id,
|
||||||
|
this.props.internalToken
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { navigate } = this.props.navigation;
|
||||||
|
return (
|
||||||
|
<PTRView onRefresh={this._update}>
|
||||||
|
<View style={styles.container}>
|
||||||
|
{this.props.eventsInternal == undefined && (
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
height: SCREEN_HEIGHT,
|
||||||
|
marginTop: SCREEN_HEIGHT * 0.27,
|
||||||
|
backgroundColor: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Text style={{ fontSize: 12, margin: 15, textAlign: "center" }}>
|
||||||
|
Se estiver a demorar muito, arrasta para atualizar
|
||||||
|
</Text>
|
||||||
|
|
||||||
render() {
|
<ActivityIndicator size="large" color="#CC1A17" />
|
||||||
const {navigate} = this.props.navigation;
|
</View>
|
||||||
return (
|
)}
|
||||||
<PTRView onRefresh={this._update}>
|
<ScrollView styles={styles.scroll}>
|
||||||
<View style={styles.container}>
|
<FlatList
|
||||||
<ScrollView styles={styles.scroll}>
|
data={this.props.eventsInternal}
|
||||||
|
renderItem={({ item }) => (
|
||||||
{
|
<View>
|
||||||
this.props.eventsInternal==undefined &&
|
<TouchableOpacity
|
||||||
<View style={{height:SCREEN_HEIGHT, marginTop:SCREEN_HEIGHT*0.27, backgroundColor:'white'}}>
|
onPress={() => navigate("event", { info: item })}
|
||||||
<Text style={{fontSize:12, margin:15, textAlign:'center'}}>Se estiver a demorar muito, arrasta para atualizar</Text>
|
>
|
||||||
<View style={{width:80, alignContent:'center', alignItems:'center'}}><Button onPress={this._update} title="Refresh" color="#CC1A17"
|
<View style={styles.cardContainer}>
|
||||||
/></View>
|
<Image
|
||||||
<ActivityIndicator size="large" color="#CC1A17" /></View>
|
style={{
|
||||||
|
flex: 1,
|
||||||
}
|
width: undefined,
|
||||||
<FlatList
|
height: undefined
|
||||||
data={this.props.eventsInternal}
|
}}
|
||||||
renderItem={({item}) =>
|
resizeMode="contain"
|
||||||
<View>
|
source={{ uri: item.imagem }}
|
||||||
<TouchableOpacity onPress={() => navigate('eventDetail', {info: item})}>
|
/>
|
||||||
<View style={styles.cardContainer}>
|
<View style={styles.cardDesc}>
|
||||||
<Image
|
<Text style={styles.cardDescText}>{item.nome}</Text>
|
||||||
style={{
|
<Text style={styles.cardHours}>{item.horas}</Text>
|
||||||
flex: 1,
|
</View>
|
||||||
width: undefined,
|
</View>
|
||||||
height: undefined
|
</TouchableOpacity>
|
||||||
}}
|
|
||||||
resizeMode="contain"
|
|
||||||
source={{uri: item.imagem}}
|
|
||||||
|
|
||||||
>
|
|
||||||
</Image>
|
|
||||||
<View style={styles.cardDesc}>
|
|
||||||
<Text style={styles.cardDescText}>{item.nome}</Text>
|
|
||||||
<Text style={styles.cardHours}>{item.horas}</Text>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>}
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
|
||||||
</ScrollView>
|
|
||||||
</View>
|
</View>
|
||||||
</PTRView>
|
)}
|
||||||
);
|
/>
|
||||||
}
|
</ScrollView>
|
||||||
|
</View>
|
||||||
|
</PTRView>
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
cardHours: {
|
cardHours: {
|
||||||
textAlign: 'center',
|
textAlign: "center",
|
||||||
color: 'white',
|
color: "white",
|
||||||
margin: 10,
|
margin: 10
|
||||||
|
|
||||||
// width:'20%'
|
// width:'20%'
|
||||||
},
|
},
|
||||||
|
|
||||||
cardDesc: {
|
cardDesc: {
|
||||||
//alignSelf:'center',
|
//alignSelf:'center',
|
||||||
backgroundColor: '#CC1A17',
|
backgroundColor: "#CC1A17",
|
||||||
// flex:1,
|
// flex:1,
|
||||||
flexDirection: 'row',
|
flexDirection: "row"
|
||||||
|
},
|
||||||
|
cardDescText: {
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "white",
|
||||||
|
fontSize: 18,
|
||||||
|
|
||||||
|
width: "45%",
|
||||||
|
margin: 10
|
||||||
|
},
|
||||||
|
container: {
|
||||||
|
backgroundColor: "white",
|
||||||
|
flex: 1,
|
||||||
|
flexGrow: 1,
|
||||||
|
flexDirection: "column",
|
||||||
|
paddingBottom: 20
|
||||||
|
},
|
||||||
|
|
||||||
},
|
scroll: {
|
||||||
cardDescText: {
|
flex: 1
|
||||||
fontWeight: 'bold',
|
},
|
||||||
color: 'white',
|
|
||||||
fontSize: 18,
|
|
||||||
|
|
||||||
width: '45%',
|
cardContainer: {
|
||||||
margin: 10
|
flex: 1,
|
||||||
|
//flexDirection: 'row',
|
||||||
|
//padding: 10,
|
||||||
|
margin: 20,
|
||||||
|
marginBottom: 0,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
height: SCREEN_WIDTH * 0.62,
|
||||||
|
borderRadius: 5
|
||||||
|
//borderWidth: 2,
|
||||||
|
},
|
||||||
|
|
||||||
},
|
scene: {
|
||||||
container: {
|
flex: 1
|
||||||
backgroundColor: 'white',
|
}
|
||||||
flex: 1,
|
|
||||||
flexGrow: 1,
|
|
||||||
flexDirection: 'column',
|
|
||||||
paddingBottom: 20
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
scroll: {
|
|
||||||
flex: 1,
|
|
||||||
},
|
|
||||||
|
|
||||||
cardContainer: {
|
|
||||||
flex: 1,
|
|
||||||
//flexDirection: 'row',
|
|
||||||
//padding: 10,
|
|
||||||
margin: 20,
|
|
||||||
marginBottom: 0,
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
height: SCREEN_WIDTH * 0.62,
|
|
||||||
borderRadius: 5,
|
|
||||||
//borderWidth: 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
scene: {
|
|
||||||
flex: 1
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function mapStateToProps(state, props) {
|
function mapStateToProps(state, props) {
|
||||||
return {
|
return {
|
||||||
token: state.apiReducer.token,
|
token: state.apiReducer.token,
|
||||||
user: state.apiReducer.user,
|
user: state.apiReducer.user,
|
||||||
logged: state.apiReducer.logged,
|
logged: state.apiReducer.logged,
|
||||||
userDetails: state.apiReducer.userDetails,
|
userDetails: state.apiReducer.userDetails,
|
||||||
onHold: state.apiReducer.onHold,
|
onHold: state.apiReducer.onHold,
|
||||||
bilhete: state.apiReducer.bilhete,
|
bilhete: state.apiReducer.bilhete,
|
||||||
alimentacao: state.apiReducer.alimentacao,
|
alimentacao: state.apiReducer.alimentacao,
|
||||||
alojamento: state.apiReducer.alojamento,
|
alojamento: state.apiReducer.alojamento,
|
||||||
acesso: state.apiReducer.acesso,
|
acesso: state.apiReducer.acesso,
|
||||||
team: state.apiReducer.team,
|
team: state.apiReducer.team,
|
||||||
internalToken: state.apiReducer.internalToken,
|
internalToken: state.apiReducer.internalToken,
|
||||||
eventsInternal: state.apiReducer.eventsInternal
|
eventsInternal: state.apiReducer.eventsInternal
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapDispatchToProps(dispatch) {
|
function mapDispatchToProps(dispatch) {
|
||||||
return bindActionCreators(Actions, dispatch);
|
return bindActionCreators(Actions, dispatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connect(
|
export default connect(
|
||||||
mapStateToProps,
|
mapStateToProps,
|
||||||
mapDispatchToProps
|
mapDispatchToProps
|
||||||
)(Eventos);
|
)(Eventos);
|
||||||
|
|
|
@ -106,6 +106,7 @@ class Profile extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
_press=()=>{
|
_press=()=>{
|
||||||
|
this.props.hold()
|
||||||
this.props.changePassword(
|
this.props.changePassword(
|
||||||
this.props.token,
|
this.props.token,
|
||||||
this.state.oldPass,
|
this.state.oldPass,
|
||||||
|
|
|
@ -196,7 +196,187 @@ class choosePath extends React.Component {
|
||||||
)}
|
)}
|
||||||
{this._findPath("NET") && (
|
{this._findPath("NET") && (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={["#5887FF", "#715AFF"]}
|
colors={["#67C43D", "#46B712"]}
|
||||||
|
style={styles.linearGradient}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
margin: 15,
|
||||||
|
marginBottom: 0,
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
Empresa responsável:{" "}
|
||||||
|
</Text>
|
||||||
|
<View style={styles.companyContainer}>
|
||||||
|
<View style={styles.companyDescription}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "bold",
|
||||||
|
margin: 6,
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Altice
|
||||||
|
</Text>
|
||||||
|
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
|
||||||
|
Altice é uma multinacional neerlandesa de telecomunicações,
|
||||||
|
conteúdos, media, entretenimento e publicidade.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.companyLogo}>
|
||||||
|
<FitImage
|
||||||
|
source={{
|
||||||
|
uri:
|
||||||
|
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t"
|
||||||
|
}}
|
||||||
|
style={styles.fitImage}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</LinearGradient>
|
||||||
|
)}
|
||||||
|
{this._findPath("WEB") && (
|
||||||
|
<LinearGradient
|
||||||
|
colors={["blue", "blue"]}
|
||||||
|
style={styles.linearGradient}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
margin: 15,
|
||||||
|
marginBottom: 0,
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
Empresa responsável:{" "}
|
||||||
|
</Text>
|
||||||
|
<View style={styles.companyContainer}>
|
||||||
|
<View style={styles.companyDescription}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "bold",
|
||||||
|
margin: 6,
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Blip
|
||||||
|
</Text>
|
||||||
|
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
|
||||||
|
Altice é uma multinacional neerlandesa de telecomunicações,
|
||||||
|
conteúdos, media, entretenimento e publicidade.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.companyLogo}>
|
||||||
|
<FitImage
|
||||||
|
source={{
|
||||||
|
uri:
|
||||||
|
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t"
|
||||||
|
}}
|
||||||
|
style={styles.fitImage}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</LinearGradient>
|
||||||
|
)}
|
||||||
|
{this._findPath("IOT") && (
|
||||||
|
<LinearGradient
|
||||||
|
colors={["#67C43D", "#46B712"]}
|
||||||
|
style={styles.linearGradient}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
margin: 15,
|
||||||
|
marginBottom: 0,
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
Empresa responsável:{" "}
|
||||||
|
</Text>
|
||||||
|
<View style={styles.companyContainer}>
|
||||||
|
<View style={styles.companyDescription}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "bold",
|
||||||
|
margin: 6,
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
ubiwhere
|
||||||
|
</Text>
|
||||||
|
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
|
||||||
|
Altice é uma multinacional neerlandesa de telecomunicações,
|
||||||
|
conteúdos, media, entretenimento e publicidade.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.companyLogo}>
|
||||||
|
<FitImage
|
||||||
|
source={{
|
||||||
|
uri:
|
||||||
|
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t"
|
||||||
|
}}
|
||||||
|
style={styles.fitImage}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</LinearGradient>
|
||||||
|
)}
|
||||||
|
{this._findPath("DS") && (
|
||||||
|
<LinearGradient
|
||||||
|
colors={["#FF8A38", "#FD6A02"]}
|
||||||
|
style={styles.linearGradient}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
margin: 15,
|
||||||
|
marginBottom: 0,
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
Empresa responsável:{" "}
|
||||||
|
</Text>
|
||||||
|
<View style={styles.companyContainer}>
|
||||||
|
<View style={styles.companyDescription}>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "bold",
|
||||||
|
margin: 6,
|
||||||
|
color: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
novabase e feedzai
|
||||||
|
</Text>
|
||||||
|
<Text style={{ margin: 6, marginTop: 0, color: "white" }}>
|
||||||
|
Altice é uma multinacional neerlandesa de telecomunicações,
|
||||||
|
conteúdos, media, entretenimento e publicidade.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.companyLogo}>
|
||||||
|
<FitImage
|
||||||
|
source={{
|
||||||
|
uri:
|
||||||
|
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuIfl0Km4mTbCGdJSr4bWn_ApFHnOrjYsmJ4VlBL1OkaIlb93t"
|
||||||
|
}}
|
||||||
|
style={styles.fitImage}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</LinearGradient>
|
||||||
|
)}
|
||||||
|
{this._findPath("MOB") && (
|
||||||
|
<LinearGradient
|
||||||
|
colors={["orange", "#46B712"]}
|
||||||
style={styles.linearGradient}
|
style={styles.linearGradient}
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
|
@ -239,7 +419,6 @@ class choosePath extends React.Component {
|
||||||
</View>
|
</View>
|
||||||
</LinearGradient>
|
</LinearGradient>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|
|
@ -0,0 +1,460 @@
|
||||||
|
import * as React from "react";
|
||||||
|
import {
|
||||||
|
View,
|
||||||
|
StyleSheet,
|
||||||
|
Dimensions,
|
||||||
|
Image,
|
||||||
|
ScrollView,
|
||||||
|
Text,
|
||||||
|
Button,
|
||||||
|
TouchableOpacity,
|
||||||
|
ImageBackground,
|
||||||
|
ListView,
|
||||||
|
FlatList,
|
||||||
|
ActivityIndicator
|
||||||
|
} from "react-native";
|
||||||
|
|
||||||
|
import moment from "moment";
|
||||||
|
import {Divider, Icon, Avatar} from "react-native-elements";
|
||||||
|
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 NavAbsolute from "../components/Nav";
|
||||||
|
|
||||||
|
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 MapView, {PROVIDER_GOOGLE} from "react-native-maps";
|
||||||
|
|
||||||
|
const formatObj = obj => {
|
||||||
|
let a = {};
|
||||||
|
|
||||||
|
a.push({});
|
||||||
|
|
||||||
|
return a;
|
||||||
|
};
|
||||||
|
|
||||||
|
class event extends React.Component {
|
||||||
|
static navigationOptions = ({navigation}) => ({
|
||||||
|
header: (
|
||||||
|
<NavAbsolute
|
||||||
|
navigation={navigation}
|
||||||
|
// title={navigation.state.params.info.name}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
state = {};
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
|
||||||
|
|
||||||
|
const {navigation} = this.props;
|
||||||
|
const info = navigation.getParam("info", "error");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_update = () => {
|
||||||
|
this.setState({user: this.props.user});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
_renderRally = (info) => {
|
||||||
|
console.log(info)
|
||||||
|
return (
|
||||||
|
<View>
|
||||||
|
<View style={styles.header}>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
alignSelf: "center"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<View style={styles.leftRow}>
|
||||||
|
<Text style={{
|
||||||
|
margin: 10,
|
||||||
|
marginTop: 0,
|
||||||
|
marginBottom: 10,
|
||||||
|
fontSize: 20,
|
||||||
|
color: "#CC1A17" }}>
|
||||||
|
{info.location.nome}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.timeText}>
|
||||||
|
<Text style={{color: "#CC1A17", fontSize: 15}}>
|
||||||
|
{info.hora}
|
||||||
|
</Text>
|
||||||
|
<Text>{info.horas}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View>
|
||||||
|
<View style={{margin: 10}}>
|
||||||
|
<Text
|
||||||
|
style={{fontSize: 15, color: "#CC1A17", fontWeight: "bold"}}
|
||||||
|
>
|
||||||
|
Descrição:
|
||||||
|
</Text>
|
||||||
|
<Divider style={{backgroundColor: "#000"}}/>
|
||||||
|
<View style={{marginTop: 10}}>
|
||||||
|
<Text>{info.location.desc}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
_renderEventDetail = (info) => {
|
||||||
|
return (
|
||||||
|
<View>
|
||||||
|
<View style={styles.header}>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
alignSelf: "center"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<View style={styles.timeText}>
|
||||||
|
<Text style={{color: "#CC1A17", fontSize: 15}}>
|
||||||
|
{info.hora}
|
||||||
|
</Text>
|
||||||
|
<Text>{info.horas}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
margin: 10,
|
||||||
|
marginTop: 0,
|
||||||
|
marginBottom: 10,
|
||||||
|
fontSize: 20,
|
||||||
|
color: "#CC1A17"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{info.nome}
|
||||||
|
</Text>
|
||||||
|
<View style={{margin: 10}}>
|
||||||
|
<Text
|
||||||
|
style={{fontSize: 15, color: "#CC1A17", fontWeight: "bold"}}
|
||||||
|
>
|
||||||
|
Descrição:
|
||||||
|
</Text>
|
||||||
|
<Divider style={{backgroundColor: "#000"}}/>
|
||||||
|
<View style={{marginTop: 10}}>
|
||||||
|
<Text>{info.desc}</Text>
|
||||||
|
</View>
|
||||||
|
<Text
|
||||||
|
style={{fontSize: 15, color: "#CC1A17", fontWeight: "bold", marginTop: 10}}
|
||||||
|
>
|
||||||
|
Como posso participar?
|
||||||
|
</Text>
|
||||||
|
<Divider style={{backgroundColor: "#000"}}/>
|
||||||
|
<View style={{marginTop: 10}}>
|
||||||
|
<Text>{info.notas}</Text>
|
||||||
|
</View>
|
||||||
|
<Text
|
||||||
|
style={{fontSize: 15, color: "#CC1A17", fontWeight: "bold", marginTop: 10}}
|
||||||
|
>
|
||||||
|
Qual é o custo de participação?
|
||||||
|
</Text>
|
||||||
|
<Divider style={{backgroundColor: "#000"}}/>
|
||||||
|
<View style={{marginTop: 10}}>
|
||||||
|
<Text>{info.custo}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
_renderContainer = (info, eventType) => {
|
||||||
|
console.log("Estou aqui " + eventType)
|
||||||
|
if (eventType === "rally") {
|
||||||
|
return this._renderRally(info);
|
||||||
|
}
|
||||||
|
else if (eventType === undefined) {
|
||||||
|
return this._renderEventDetail(info);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
this.data = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {navigation} = this.props;
|
||||||
|
const info = navigation.getParam("info", "error");
|
||||||
|
const eventType = navigation.getParam("type");
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.mainViewStyle}>
|
||||||
|
<ScrollView style={styles.scroll}>
|
||||||
|
<View style={styles.container}>
|
||||||
|
<View style={styles.headerContainer}>
|
||||||
|
<View style={styles.headerContainer}>
|
||||||
|
<View style={styles.coverContainer}>
|
||||||
|
<ImageBackground
|
||||||
|
source={{
|
||||||
|
uri: info.imagem
|
||||||
|
}}
|
||||||
|
style={styles.coverImage}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
{this._renderContainer(info, eventType)}
|
||||||
|
</View>
|
||||||
|
<View style={styles.block}>
|
||||||
|
<Text
|
||||||
|
style={{fontSize: 15, color: "#CC1A17", fontWeight: "bold"}}
|
||||||
|
>
|
||||||
|
Localização
|
||||||
|
</Text>
|
||||||
|
<Divider style={{backgroundColor: "#000", marginBottom: 10}}/>
|
||||||
|
<Text>{info.localizacao}</Text>
|
||||||
|
</View>
|
||||||
|
</ScrollView>
|
||||||
|
<Divider style={{backgroundColor: "black"}}/>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
block: {
|
||||||
|
marginTop: 15,
|
||||||
|
|
||||||
|
backgroundColor: "white",
|
||||||
|
padding: 20,
|
||||||
|
shadowOffset: {
|
||||||
|
width: 0,
|
||||||
|
height: 2
|
||||||
|
},
|
||||||
|
shadowOpacity: 0.25,
|
||||||
|
shadowRadius: 3.84,
|
||||||
|
|
||||||
|
elevation: 3
|
||||||
|
},
|
||||||
|
AttendeeContainer: {
|
||||||
|
flexDirection: "row",
|
||||||
|
height: 55,
|
||||||
|
justifyContent: "center",
|
||||||
|
marginLeft: 10,
|
||||||
|
marginRight: 10
|
||||||
|
},
|
||||||
|
|
||||||
|
centerRow: {
|
||||||
|
alignItems: "center",
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
flex: 3,
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "center"
|
||||||
|
},
|
||||||
|
|
||||||
|
leftRow: {
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
alignSelf: "center"
|
||||||
|
},
|
||||||
|
rightRow: {
|
||||||
|
alignItems: "flex-end",
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
flex: 2,
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "flex-end",
|
||||||
|
marginRight: 4,
|
||||||
|
alignSelf: "center"
|
||||||
|
},
|
||||||
|
|
||||||
|
icon: {
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
marginTop: 2.8
|
||||||
|
},
|
||||||
|
|
||||||
|
nameAttendee: {
|
||||||
|
alignSelf: "center",
|
||||||
|
fontSize: 20,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "#000",
|
||||||
|
marginBottom: 10
|
||||||
|
},
|
||||||
|
|
||||||
|
details: {
|
||||||
|
marginTop: 20,
|
||||||
|
flex: 1,
|
||||||
|
alignSelf: "center"
|
||||||
|
},
|
||||||
|
|
||||||
|
infoRow: {
|
||||||
|
margin: 25
|
||||||
|
},
|
||||||
|
|
||||||
|
ramoText: {
|
||||||
|
alignSelf: "flex-start",
|
||||||
|
marginBottom: 5,
|
||||||
|
color: "white",
|
||||||
|
fontSize: 17,
|
||||||
|
fontWeight: "400"
|
||||||
|
},
|
||||||
|
|
||||||
|
timeText: {
|
||||||
|
alignItems: "flex-end",
|
||||||
|
flex: 2,
|
||||||
|
lineHeight: 10,
|
||||||
|
marginRight: 20
|
||||||
|
},
|
||||||
|
|
||||||
|
mainViewStyle: {
|
||||||
|
flex: 1,
|
||||||
|
flexGrow: 1,
|
||||||
|
flexDirection: "column"
|
||||||
|
},
|
||||||
|
|
||||||
|
scroll: {
|
||||||
|
backgroundColor: "#eee",
|
||||||
|
flex: 1
|
||||||
|
//marginBottom: 55,
|
||||||
|
},
|
||||||
|
|
||||||
|
header: {
|
||||||
|
flex: 1,
|
||||||
|
padding: 10,
|
||||||
|
backgroundColor: "white",
|
||||||
|
borderRadius: 0,
|
||||||
|
shadowColor: "#000",
|
||||||
|
shadowOffset: {
|
||||||
|
width: 0,
|
||||||
|
height: 2
|
||||||
|
},
|
||||||
|
shadowOpacity: 0.25,
|
||||||
|
shadowRadius: 3.84,
|
||||||
|
|
||||||
|
elevation: 3
|
||||||
|
},
|
||||||
|
cardContainer: {
|
||||||
|
flex: 1,
|
||||||
|
padding: 10,
|
||||||
|
// margin: 20,
|
||||||
|
backgroundColor: "white",
|
||||||
|
borderRadius: 5
|
||||||
|
},
|
||||||
|
|
||||||
|
headerContainer: {
|
||||||
|
flex: 1
|
||||||
|
},
|
||||||
|
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: "column"
|
||||||
|
},
|
||||||
|
coverContainer: {
|
||||||
|
position: "relative"
|
||||||
|
},
|
||||||
|
coverImage: {
|
||||||
|
height: Dimensions.get("window").width * (2 / 4),
|
||||||
|
width: Dimensions.get("window").width
|
||||||
|
},
|
||||||
|
/*headerContainer: {
|
||||||
|
alignItems: 'center',
|
||||||
|
backgroundColor: '#FFF',
|
||||||
|
},*/
|
||||||
|
|
||||||
|
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,
|
||||||
|
careerPath: state.apiReducer.careerPath,
|
||||||
|
sessionDetail: state.apiReducer.sessionDetail
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function mapDispatchToProps(dispatch) {
|
||||||
|
return bindActionCreators(Actions, dispatch);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(event);
|
|
@ -228,7 +228,8 @@ class eventDetail extends React.Component {
|
||||||
const { navigation } = this.props;
|
const { navigation } = this.props;
|
||||||
const info = navigation.getParam("info", "error");
|
const info = navigation.getParam("info", "error");
|
||||||
const eventType = navigation.getParam("type");
|
const eventType = navigation.getParam("type");
|
||||||
|
console.log(info)
|
||||||
|
if(info!= undefined)
|
||||||
return (
|
return (
|
||||||
<View style={styles.mainViewStyle}>
|
<View style={styles.mainViewStyle}>
|
||||||
<ScrollView style={styles.scroll}>
|
<ScrollView style={styles.scroll}>
|
||||||
|
|
|
@ -8,6 +8,7 @@ export const GET_CROMOS='GET_CROMOS'
|
||||||
export const GET_LOCS_VISITED= 'GET_LOCS_VISITED'
|
export const GET_LOCS_VISITED= 'GET_LOCS_VISITED'
|
||||||
export const SCAN_QR = 'SCAN_QR'
|
export const SCAN_QR = 'SCAN_QR'
|
||||||
export const LOGIN_INTERNAL ='LOGIN_INTERNAL'
|
export const LOGIN_INTERNAL ='LOGIN_INTERNAL'
|
||||||
|
export const CHANGE_PASSWORD='CHANGE_PASSWORD'
|
||||||
|
|
||||||
|
|
||||||
//API BLUETREND
|
//API BLUETREND
|
||||||
|
|
|
@ -31,7 +31,8 @@ import {
|
||||||
GET_CROMOS,
|
GET_CROMOS,
|
||||||
GET_LOCS_VISITED,
|
GET_LOCS_VISITED,
|
||||||
SCAN_QR,
|
SCAN_QR,
|
||||||
LOGIN_INTERNAL
|
LOGIN_INTERNAL,
|
||||||
|
CHANGE_PASSWORD
|
||||||
} from "./actionTypes"; //Import the actions types constant we defined in our actions
|
} from "./actionTypes"; //Import the actions types constant we defined in our actions
|
||||||
|
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
@ -71,6 +72,14 @@ export function scanQrCode(data, tokenInternal) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function changeTeamName(){
|
||||||
|
axios.defaults.headers.common = {
|
||||||
|
Authorization: `bearer ${tokenInternal}`
|
||||||
|
};
|
||||||
|
axios.defaults.baseURL = "https://api.enei.pt/api";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
export function getEventLocsVisited(teamId, tokenInternal) {
|
export function getEventLocsVisited(teamId, tokenInternal) {
|
||||||
axios.defaults.headers.common = {
|
axios.defaults.headers.common = {
|
||||||
Authorization: `bearer ${tokenInternal}`
|
Authorization: `bearer ${tokenInternal}`
|
||||||
|
@ -90,7 +99,7 @@ export function getEventLocsVisited(teamId, tokenInternal) {
|
||||||
})
|
})
|
||||||
.catch(p => {
|
.catch(p => {
|
||||||
console.log(p);
|
console.log(p);
|
||||||
Alert.alert("ERRO!", "erro a obter os locais visitados");
|
// Alert.alert("ERRO!", "erro a obter os locais visitados");
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -662,6 +671,9 @@ export function changePassword(token, old, new1, new2) {
|
||||||
NewPassword: new1
|
NewPassword: new1
|
||||||
})
|
})
|
||||||
.then(a => {
|
.then(a => {
|
||||||
|
dispatch({
|
||||||
|
type: CHANGE_PASSWORD
|
||||||
|
});
|
||||||
Alert.alert("Sucesso!", "Password alterada com sucesso");
|
Alert.alert("Sucesso!", "Password alterada com sucesso");
|
||||||
})
|
})
|
||||||
.catch(p => {
|
.catch(p => {
|
||||||
|
@ -1703,7 +1715,7 @@ export function getUserInfo(token) {
|
||||||
})
|
})
|
||||||
.catch(p => {
|
.catch(p => {
|
||||||
console.log(p);
|
console.log(p);
|
||||||
Alert.alert("ERRO!", "erro a obter os locais visitados");
|
// Alert.alert("ERRO!", "erro a obter os locais visitados");
|
||||||
});
|
});
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
|
|
|
@ -25,7 +25,8 @@ CREATE_TEAM,
|
||||||
GET_CROMOS,
|
GET_CROMOS,
|
||||||
GET_LOCS_VISITED,
|
GET_LOCS_VISITED,
|
||||||
SCAN_QR,
|
SCAN_QR,
|
||||||
LOGIN_INTERNAL
|
LOGIN_INTERNAL,
|
||||||
|
CHANGE_PASSWORD
|
||||||
} from "../actions/actionTypes"; //Import the actions types constant we defined in our actions
|
} from "../actions/actionTypes"; //Import the actions types constant we defined in our actions
|
||||||
|
|
||||||
import { REHYDRATE } from "redux-persist";
|
import { REHYDRATE } from "redux-persist";
|
||||||
|
@ -138,6 +139,10 @@ const apiReducer = (state = apiState, action) => {
|
||||||
locais: action.locais
|
locais: action.locais
|
||||||
});
|
});
|
||||||
|
|
||||||
|
case CHANGE_PASSWORD:
|
||||||
|
return Object.assign({}, state, {
|
||||||
|
onHold: false
|
||||||
|
});
|
||||||
case "CHANGE_CONNECTION_STATUS":
|
case "CHANGE_CONNECTION_STATUS":
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
isConnected: action.isConnected
|
isConnected: action.isConnected
|
||||||
|
|
Loading…
Reference in New Issue