useAuth.js 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { useCallback } from 'react'
  2. import { useDispatch } from 'react-redux'
  3. import Taro from '@tarojs/taro'
  4. import { dispatchUpdateUserInfo } from '@/actions/user'
  5. import { queryUserPhone } from '@/services/user'
  6. import { UPDATE_USER_INFO } from '@/constants/user'
  7. export default function useAuth() {
  8. const dispatch = useDispatch()
  9. const updateUserInfo = useCallback((data) => {
  10. return new Promise((resolve, reject) => {
  11. const sessionKey = Taro.getStorageSync('sessionKey')
  12. Object.assign(data, { sessionKey })
  13. dispatchUpdateUserInfo(data)(dispatch).then(() => {
  14. resolve()
  15. }).catch((err) => {
  16. console.error(err)
  17. reject(err)
  18. })
  19. })
  20. }, [dispatch])
  21. const updatePhoneNumber = useCallback((data) => {
  22. return new Promise((resolve, reject) => {
  23. const sessionKey = Taro.getStorageSync('sessionKey')
  24. Object.assign(data, { sessionKey })
  25. queryUserPhone(data).then((res) => {
  26. dispatch({
  27. type: UPDATE_USER_INFO,
  28. payload: {
  29. phone: res.phoneNumber
  30. }
  31. })
  32. resolve()
  33. }).catch((err) => {
  34. console.error(err)
  35. reject(err)
  36. })
  37. })
  38. }, [dispatch])
  39. return { updateUserInfo, updatePhoneNumber }
  40. }