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";