From 78641e1e87a16f484cbe304b2325192b8601a69a Mon Sep 17 00:00:00 2001
From: WX <42308734@qq.com>
Date: Wed, 26 Apr 2023 18:07:37 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=E6=B2=A1=E6=9C=89?=
=?UTF-8?q?=E7=94=A8=E5=88=B0=E7=9A=84Home=E9=A1=B5=E9=9D=A2=20&=20?=
=?UTF-8?q?=E7=AE=80=E5=8C=96=E7=99=BB=E9=99=86=E8=AF=B7=E6=B1=82=E5=92=8C?=
=?UTF-8?q?=E9=AA=8C=E8=AF=81token=E8=AF=B7=E6=B1=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
HelloWorld/src/hooks/users.js | 49 ++++++++---
HelloWorld/src/pages/AuthLoading/index.js | 20 ++---
HelloWorld/src/pages/Home/index.js | 27 ------
HelloWorld/src/routes/index.js | 1 -
template/template/src/hooks/users.js | 82 ++++++++++++-------
.../template/src/pages/AuthLoading/index.js | 20 ++---
template/template/src/pages/Home/index.js | 27 ------
template/template/src/routes/index.js | 1 -
8 files changed, 104 insertions(+), 123 deletions(-)
delete mode 100644 HelloWorld/src/pages/Home/index.js
delete mode 100644 template/template/src/pages/Home/index.js
diff --git a/HelloWorld/src/hooks/users.js b/HelloWorld/src/hooks/users.js
index 24a4470f..fa91dfb1 100644
--- a/HelloWorld/src/hooks/users.js
+++ b/HelloWorld/src/hooks/users.js
@@ -1,11 +1,12 @@
-import {Alert} from 'react-native';
+import { Alert } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';
-import {userLogin, userAuth} from '../services/users';
-import {useQuery, useMutation} from 'react-query';
+import { userLogin, userAuth } from '../services/users';
+import { useQuery, useMutation } from 'react-query';
import Global from '../global';
import conf from '../config';
+import { useSelector, useDispatch } from 'react-redux'
// 登录
-export const login = ({config = {}, update, formData, remember}) => {
+export const login = ({ config = {}, update, remember }) => {
const mutation = useMutation({
mutationFn: userLogin,
onSuccess: async data => {
@@ -16,7 +17,7 @@ export const login = ({config = {}, update, formData, remember}) => {
await AsyncStorage.setItem('cachPassword', formData.password);
}
await AsyncStorage.setItem('userData', JSON.stringify(data.data));
- update({token: data.token, userData: data.data});
+ update({ token: data.token, userData: data.data });
if (Global.navigation) {
Global.navigation.replace('Tab');
}
@@ -30,14 +31,21 @@ export const login = ({config = {}, update, formData, remember}) => {
};
// 验证token
-export const useAuthToken = ({token, update}) => {
+export const useAuthToken = () => {
+ const { token } = useSelector(state => state.global)
+ const dispatch = useDispatch()
const mutation = useMutation({
mutationFn: userAuth,
onMutate: async () => {
let host = await AsyncStorage.getItem('apihost');
if (!host && conf.hosts[0]) {
await AsyncStorage.setItem('apihost', JSON.stringify(conf.hosts[0]));
- await update({apihost: conf.hosts[0]});
+ dispatch({
+ type: "global/update",
+ payload: {
+ apihost: conf.hosts[0]
+ }
+ })
}
if (!token) {
await AsyncStorage.removeItem('userData');
@@ -46,9 +54,21 @@ export const useAuthToken = ({token, update}) => {
},
onSuccess: async data => {
if (data?.token) {
- await update({authState: true, token: data.token});
+ dispatch({
+ type: "global/update",
+ payload: {
+ token: data.token,
+ authState: true
+ }
+ })
} else {
- await update({authState: true, token: null});
+ dispatch({
+ type: "global/update",
+ payload: {
+ authState: true,
+ token: null
+ }
+ })
}
},
});
@@ -56,10 +76,17 @@ export const useAuthToken = ({token, update}) => {
};
// 退出
-export const logout = ({update}) => {
+export const logout = () => {
+ const dispatch = useDispatch()
AsyncStorage.removeItem('token');
AsyncStorage.removeItem('userData');
- update({token: null, userData: null});
+ dispatch({
+ type: "global/update",
+ payload: {
+ token: null,
+ authState: null
+ }
+ })
if (Global.navigation) {
Global.navigation.navigate?.('SignIn');
}
diff --git a/HelloWorld/src/pages/AuthLoading/index.js b/HelloWorld/src/pages/AuthLoading/index.js
index 631792d1..adc0130e 100644
--- a/HelloWorld/src/pages/AuthLoading/index.js
+++ b/HelloWorld/src/pages/AuthLoading/index.js
@@ -1,20 +1,20 @@
import React, { useEffect } from 'react';
import { Text, StatusBar, StyleSheet, SafeAreaView } from 'react-native';
-import { connect } from 'react-redux';
+import { useSelector } from 'react-redux';
import { Flex, Loader, H3, Icon } from '@uiw/react-native';
import Global from '../../global';
import { logoLight } from '../../components/icons/signin';
import Footer from '../../components/Footer';
import { useAuthToken } from '../../hooks/users'
+
const AuthLoadingScreen = ({
navigation,
- update,
- token,
- authState,
children
}) => {
- const { mutate, isLoading } = useAuthToken({ update, token })
+ const { token, authState } = useSelector(state=>state.global)
+ const { mutate, isLoading } = useAuthToken()
+
useEffect(() => {
if (navigation && Global) {
Global.navigation = navigation;
@@ -42,15 +42,7 @@ const AuthLoadingScreen = ({
);
}
-export default connect(
- ({ global }) => ({
- token: global.token,
- authState: global.authState,
- }),
- ({ global }) => ({
- update: global.update,
- })
-)(AuthLoadingScreen);
+export default AuthLoadingScreen
const styles = StyleSheet.create({
container: {
diff --git a/HelloWorld/src/pages/Home/index.js b/HelloWorld/src/pages/Home/index.js
deleted file mode 100644
index 62799d49..00000000
--- a/HelloWorld/src/pages/Home/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react';
-import {StatusBar, useColorScheme} from 'react-native';
-import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
-import TabsScreen from '../../routes/tabs';
-
-const BottomTabs = createBottomTabNavigator();
-
-const DashboardScreen = props => {
- const colorScheme = useColorScheme();
- const iconColor = (colorScheme && colorScheme) === 'light' ? '#000' : '#fff';
- return (
-
-
-
- {TabsScreen({iconColor}).map((props, idx) => {
- return ;
- })}
-
-
- );
-};
-
-export default DashboardScreen;
diff --git a/HelloWorld/src/routes/index.js b/HelloWorld/src/routes/index.js
index b35f7820..c9e1c5ca 100644
--- a/HelloWorld/src/routes/index.js
+++ b/HelloWorld/src/routes/index.js
@@ -1,4 +1,3 @@
-import Home from '../pages/Home';
import SignIn from '../pages/SignIn';
import DevOptions from '../pages/DevOptions';
import MyHomeSetting from '../pages/MyHome/Setting';
diff --git a/template/template/src/hooks/users.js b/template/template/src/hooks/users.js
index 6ba400b1..fa91dfb1 100644
--- a/template/template/src/hooks/users.js
+++ b/template/template/src/hooks/users.js
@@ -1,25 +1,25 @@
-import { Alert } from "react-native";
-import AsyncStorage from "@react-native-async-storage/async-storage";
-import { userLogin, userAuth } from "../services/users";
-import { useQuery, useMutation } from "react-query";
-import Global from "../global";
-import conf from "../config";
-
+import { Alert } from 'react-native';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import { userLogin, userAuth } from '../services/users';
+import { useQuery, useMutation } from 'react-query';
+import Global from '../global';
+import conf from '../config';
+import { useSelector, useDispatch } from 'react-redux'
// 登录
-export const useLogin = ({ config = {}, update, formData, remember }) => {
+export const login = ({ config = {}, update, remember }) => {
const mutation = useMutation({
mutationFn: userLogin,
- onSuccess: async (data) => {
+ onSuccess: async data => {
if (data?.token && data?.data) {
- await AsyncStorage.setItem("token", data.token);
+ await AsyncStorage.setItem('token', data.token);
if (remember) {
- await AsyncStorage.setItem("cachLoginName", formData.loginName);
- await AsyncStorage.setItem("cachPassword", formData.password);
+ await AsyncStorage.setItem('cachLoginName', formData.loginName);
+ await AsyncStorage.setItem('cachPassword', formData.password);
}
- await AsyncStorage.setItem("userData", JSON.stringify(data.data));
+ await AsyncStorage.setItem('userData', JSON.stringify(data.data));
update({ token: data.token, userData: data.data });
if (Global.navigation) {
- Global.navigation.replace("Tab");
+ Global.navigation.replace('Tab');
}
} else if (data && data.message) {
Alert.alert(`Login failed - ${data.error}`, data.message);
@@ -31,25 +31,44 @@ export const useLogin = ({ config = {}, update, formData, remember }) => {
};
// 验证token
-export const useAuthToken = ({ token, update }) => {
+export const useAuthToken = () => {
+ const { token } = useSelector(state => state.global)
+ const dispatch = useDispatch()
const mutation = useMutation({
mutationFn: userAuth,
onMutate: async () => {
- let host = await AsyncStorage.getItem("apihost");
+ let host = await AsyncStorage.getItem('apihost');
if (!host && conf.hosts[0]) {
- await AsyncStorage.setItem("apihost", JSON.stringify(conf.hosts[0]));
- await update({ apihost: conf.hosts[0] });
+ await AsyncStorage.setItem('apihost', JSON.stringify(conf.hosts[0]));
+ dispatch({
+ type: "global/update",
+ payload: {
+ apihost: conf.hosts[0]
+ }
+ })
}
if (!token) {
- await AsyncStorage.removeItem("userData");
- await AsyncStorage.removeItem("token");
+ await AsyncStorage.removeItem('userData');
+ await AsyncStorage.removeItem('token');
}
},
- onSuccess: async (data) => {
+ onSuccess: async data => {
if (data?.token) {
- await update({ authState: true, token: data.token });
+ dispatch({
+ type: "global/update",
+ payload: {
+ token: data.token,
+ authState: true
+ }
+ })
} else {
- await update({ authState: true, token: null });
+ dispatch({
+ type: "global/update",
+ payload: {
+ authState: true,
+ token: null
+ }
+ })
}
},
});
@@ -57,11 +76,18 @@ export const useAuthToken = ({ token, update }) => {
};
// 退出
-export const logout = ({ update }) => {
- AsyncStorage.removeItem("token");
- AsyncStorage.removeItem("userData");
- update({ token: null, userData: null });
+export const logout = () => {
+ const dispatch = useDispatch()
+ AsyncStorage.removeItem('token');
+ AsyncStorage.removeItem('userData');
+ dispatch({
+ type: "global/update",
+ payload: {
+ token: null,
+ authState: null
+ }
+ })
if (Global.navigation) {
- Global.navigation.navigate?.("SignIn");
+ Global.navigation.navigate?.('SignIn');
}
};
diff --git a/template/template/src/pages/AuthLoading/index.js b/template/template/src/pages/AuthLoading/index.js
index 631792d1..adc0130e 100644
--- a/template/template/src/pages/AuthLoading/index.js
+++ b/template/template/src/pages/AuthLoading/index.js
@@ -1,20 +1,20 @@
import React, { useEffect } from 'react';
import { Text, StatusBar, StyleSheet, SafeAreaView } from 'react-native';
-import { connect } from 'react-redux';
+import { useSelector } from 'react-redux';
import { Flex, Loader, H3, Icon } from '@uiw/react-native';
import Global from '../../global';
import { logoLight } from '../../components/icons/signin';
import Footer from '../../components/Footer';
import { useAuthToken } from '../../hooks/users'
+
const AuthLoadingScreen = ({
navigation,
- update,
- token,
- authState,
children
}) => {
- const { mutate, isLoading } = useAuthToken({ update, token })
+ const { token, authState } = useSelector(state=>state.global)
+ const { mutate, isLoading } = useAuthToken()
+
useEffect(() => {
if (navigation && Global) {
Global.navigation = navigation;
@@ -42,15 +42,7 @@ const AuthLoadingScreen = ({
);
}
-export default connect(
- ({ global }) => ({
- token: global.token,
- authState: global.authState,
- }),
- ({ global }) => ({
- update: global.update,
- })
-)(AuthLoadingScreen);
+export default AuthLoadingScreen
const styles = StyleSheet.create({
container: {
diff --git a/template/template/src/pages/Home/index.js b/template/template/src/pages/Home/index.js
deleted file mode 100644
index 62799d49..00000000
--- a/template/template/src/pages/Home/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react';
-import {StatusBar, useColorScheme} from 'react-native';
-import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
-import TabsScreen from '../../routes/tabs';
-
-const BottomTabs = createBottomTabNavigator();
-
-const DashboardScreen = props => {
- const colorScheme = useColorScheme();
- const iconColor = (colorScheme && colorScheme) === 'light' ? '#000' : '#fff';
- return (
-
-
-
- {TabsScreen({iconColor}).map((props, idx) => {
- return ;
- })}
-
-
- );
-};
-
-export default DashboardScreen;
diff --git a/template/template/src/routes/index.js b/template/template/src/routes/index.js
index 99ecd2e1..05a76fcd 100644
--- a/template/template/src/routes/index.js
+++ b/template/template/src/routes/index.js
@@ -1,4 +1,3 @@
-import Home from "../pages/Home";
import SignIn from "../pages/SignIn";
import DevOptions from "../pages/DevOptions";
import MyHomeSetting from "../pages/MyHome/Setting";