Skip to content

Commit fd8f7a5

Browse files
committed
new redux connect, deleteToken method, signOut
1 parent 6726692 commit fd8f7a5

File tree

6 files changed

+44
-31
lines changed

6 files changed

+44
-31
lines changed

App.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ const AuthStack = createStackNavigator();
99
const AppStack = createStackNavigator();
1010
const RootStack = createStackNavigator();
1111

12-
13-
import { connect } from 'react-redux';
12+
import { useSelector } from "react-redux";
1413

1514
//don`t use expressions
1615
const AppStackScreen = () =>
@@ -25,13 +24,16 @@ const AuthStackScreen = () =>
2524
}} />
2625
</AuthStack.Navigator>
2726

28-
const RootStackScreen = ({ userToken }) =>
29-
<RootStack.Navigator headerMode="none">
30-
{userToken ?
31-
<RootStack.Screen name="App" component={AppStackScreen} /> :
32-
<RootStack.Screen name="Auth" component={AuthStackScreen} />}
33-
</RootStack.Navigator>
34-
27+
const RootStackScreen = () => {
28+
const userToken = useSelector(state => state.token);
29+
return (
30+
<RootStack.Navigator headerMode="none">
31+
{userToken ?
32+
<RootStack.Screen name="App" component={AppStackScreen} /> :
33+
<RootStack.Screen name="Auth" component={AuthStackScreen} />}
34+
</RootStack.Navigator>
35+
)
36+
}
3537

3638
const App = () => {
3739
return (
@@ -43,4 +45,4 @@ const App = () => {
4345
);
4446
}
4547

46-
export default App;
48+
export default App

actions/index.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GET_TOKEN } from '../reducers/constants'
1+
import { GET_TOKEN, DELETE_TOKEN } from '../reducers/constants'
22

33
export function getToken() {
44
return {
@@ -9,4 +9,12 @@ export function getToken() {
99
}
1010
}
1111
};
12+
}
13+
14+
export function deleteToken() {
15+
return {
16+
type: DELETE_TOKEN,
17+
payload: {
18+
}
19+
};
1220
}

reducers/constants.js

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
export const GET_TOKEN = 'GET_TOKEN';
22
export const GET_TOKEN_SUCCESS = 'GET_TOKEN_SUCCESS';
33
export const GET_TOKEN_FAIL = 'GET_TOKEN_FAIL';
4+
5+
export const DELETE_TOKEN = 'DELETE_TOKEN';
6+

reducers/index.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GET_TOKEN, GET_TOKEN_SUCCESS, GET_TOKEN_FAIL } from './constants'
1+
import { GET_TOKEN, GET_TOKEN_SUCCESS, GET_TOKEN_FAIL, DELETE_TOKEN } from './constants'
22

33
export default function reducer(state = { token: null }, action) {
44
switch (action.type) {
@@ -12,6 +12,11 @@ export default function reducer(state = { token: null }, action) {
1212
loading: false,
1313
error: 'Error while fetching account'
1414
};
15+
case DELETE_TOKEN:
16+
return {
17+
...state,
18+
token: null,
19+
};
1520
default:
1621
return state;
1722
}

screens/AutorizationScreen.jsx

+7-15
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import React, { useState, useEffect } from 'react'
2+
import { useDispatch, useSelector } from "react-redux";
23
import styled from 'styled-components/native'
34
import { Text, Alert } from 'react-native'
45
import { Link, CustomTextInput, Button } from '../components'
56
import WaterfallImage from '../assets/waterfall.svg'
67
import SvgUri from 'react-native-svg-uri';
7-
8-
import { connect } from 'react-redux';
98
import { getToken } from '../actions';
109

1110

12-
const AutorizationScreen = ({ getToken, token, navigation }) => {
11+
const AutorizationScreen = ({ navigation }) => {
1312
const [login, setLogin] = useState('');
1413
const [password, setPassword] = useState('');
1514
const [isSending, setIsSending] = useState(false)
1615

16+
const token = useSelector(state => state.token);
17+
const dispatch = useDispatch();
18+
1719
const showAlert = (title = 'RESPONSE', data) => {
1820
Alert.alert(
1921
`${title}`,
@@ -33,7 +35,7 @@ const AutorizationScreen = ({ getToken, token, navigation }) => {
3335
const getTokenRequest = async () => {
3436
if (isSending) {
3537
try {
36-
await getToken();
38+
dispatch(getToken())
3739
} catch (error) {
3840
showAlert('ERROR', error)
3941
} finally {
@@ -115,15 +117,5 @@ text-align:center;
115117
font-size: 12;
116118
`;
117119

118-
const mapStateToProps = state => {
119-
return {
120-
token: state.token
121-
};
122-
};
123-
const mapDispatchToProps = {
124-
getToken
125-
};
126-
127-
128-
export default connect(mapStateToProps, mapDispatchToProps)(AutorizationScreen);
120+
export default AutorizationScreen;
129121

screens/HomeScreen.jsx

+7-4
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ import styled from 'styled-components/native'
33
import { Text } from 'react-native'
44
import { Button } from '../components'
55

6-
const signOut = () => {
7-
// delete token action
8-
}
6+
import { deleteToken } from '../actions';
7+
import { useDispatch, useSelector } from "react-redux";
8+
99
const HomeScreen = ({ navigation }) => {
10+
const token = useSelector(state => state.token);
11+
const dispatch = useDispatch();
1012
return (
1113
<Container>
1214
<Text>HomeScreen</Text>
13-
<Button handler={() => signOut()} >
15+
<Text>Token = {token}</Text>
16+
<Button handler={() => dispatch(deleteToken())} >
1417
<Text>Sign Out</Text>
1518
</Button>
1619
</Container>

0 commit comments

Comments
 (0)