feat: 修改登录
This commit is contained in:
parent
36fb790a29
commit
cca8a62dac
|
|
@ -16,3 +16,7 @@ REACT_APP_GRAPH_API_LOTTERY = "https://api.thegraph.com/subgraphs/name/pancakesw
|
|||
|
||||
REACT_APP_SNAPSHOT_BASE_URL = "https://testnet.snapshot.org"
|
||||
REACT_APP_SNAPSHOT_VOTING_API = "https://xtjyd0liqe.execute-api.ap-northeast-1.amazonaws.com/dev/api"
|
||||
|
||||
|
||||
|
||||
REACT_APP_REQUEST_URL = 'http://101.35.117.69:9090'
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@
|
|||
"no-param-reassign": ["error", { "props": true, "ignorePropertyModificationsFor": ["state", "memo"] }],
|
||||
"react/require-default-props": 0,
|
||||
"no-nested-ternary": 0,
|
||||
"max-classes-per-file": 0
|
||||
"max-classes-per-file": 0,
|
||||
"react-hooks/exhaustive-deps":0
|
||||
// End temporary rules
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,49 @@
|
|||
import React from 'react'
|
||||
import { Menu as UikitMenu } from '@pancakeswap/uikit'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Menu as UikitMenu, ConnectorNames } from '@pancakeswap/uikit'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import { languageList } from 'config/localization/languages'
|
||||
import { useTranslation } from 'contexts/Localization'
|
||||
import useTheme from 'hooks/useTheme'
|
||||
import useAuth from 'hooks/useAuth'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { usePriceCakeBusd, useProfile } from 'state/hooks'
|
||||
import { useUnactiveAccount, useSignLogin, useAccount } from 'state/userInfo/hooks'
|
||||
import useWeb3Provider from 'hooks/useActiveWeb3React'
|
||||
import { clearUserInfo } from 'state/actions'
|
||||
import config from './config'
|
||||
|
||||
const Menu = (props) => {
|
||||
const { account } = useWeb3React()
|
||||
const account = useAccount()
|
||||
const { login, logout } = useAuth()
|
||||
const [hasWalletLogin, setHasWalletLogin] = useState(false)
|
||||
const { isDark, toggleTheme } = useTheme()
|
||||
const cakePriceUsd = usePriceCakeBusd()
|
||||
const { library } = useWeb3Provider()
|
||||
const unActiveAccount = useUnactiveAccount()
|
||||
const dispatch = useDispatch()
|
||||
const { profile } = useProfile()
|
||||
const { currentLanguage, setLanguage, t } = useTranslation()
|
||||
|
||||
const sign = useSignLogin()
|
||||
const handleLogin = async (connectorID: ConnectorNames) => {
|
||||
await login(connectorID)
|
||||
setHasWalletLogin(true)
|
||||
}
|
||||
const handleLogout = () => {
|
||||
dispatch(clearUserInfo())
|
||||
logout()
|
||||
}
|
||||
// 钱包登录后
|
||||
useEffect(() => {
|
||||
if (unActiveAccount && library.provider && hasWalletLogin) {
|
||||
setHasWalletLogin(false)
|
||||
sign()
|
||||
}
|
||||
}, [unActiveAccount, hasWalletLogin, library])
|
||||
return (
|
||||
<UikitMenu
|
||||
account={account}
|
||||
login={login}
|
||||
logout={logout}
|
||||
login={handleLogin}
|
||||
logout={handleLogout}
|
||||
isDark={isDark}
|
||||
toggleTheme={toggleTheme}
|
||||
currentLang={currentLanguage.code}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,31 @@
|
|||
import React from 'react'
|
||||
import { Button, useWalletModal } from '@pancakeswap/uikit'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Button, useWalletModal, ConnectorNames } from '@pancakeswap/uikit'
|
||||
import useAuth from 'hooks/useAuth'
|
||||
import { useTranslation } from 'contexts/Localization'
|
||||
import useToast from 'hooks/useToast'
|
||||
import { useUnactiveAccount, useSignLogin } from 'state/userInfo/hooks'
|
||||
import useWeb3Provider from 'hooks/useActiveWeb3React'
|
||||
|
||||
const UnlockButton = (props) => {
|
||||
const { t } = useTranslation()
|
||||
const { login, logout } = useAuth()
|
||||
const { onPresentConnectModal } = useWalletModal(login, logout)
|
||||
|
||||
const [hasWalletLogin, setHasWalletLogin] = useState(false)
|
||||
const { library } = useWeb3Provider()
|
||||
const unActiveAccount = useUnactiveAccount()
|
||||
const { toastInfo } = useToast()
|
||||
const sign = useSignLogin()
|
||||
const handleLogin = async (connectorID: ConnectorNames) => {
|
||||
await login(connectorID)
|
||||
setHasWalletLogin(true)
|
||||
}
|
||||
const { onPresentConnectModal } = useWalletModal(handleLogin, logout)
|
||||
// 钱包登录后
|
||||
useEffect(() => {
|
||||
if (unActiveAccount && library.provider && hasWalletLogin) {
|
||||
setHasWalletLogin(false)
|
||||
sign()
|
||||
}
|
||||
}, [unActiveAccount, hasWalletLogin, library])
|
||||
return (
|
||||
<Button onClick={onPresentConnectModal} {...props}>
|
||||
{t('Unlock Wallet')}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import request from 'utils/request'
|
||||
|
||||
export const login = (params) => {
|
||||
export const login = (data) => {
|
||||
return request.request({
|
||||
url: '/v1/login',
|
||||
method: 'get',
|
||||
params,
|
||||
url: '/high_city/app/api/auth/login',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export const queryLoginHash = (params) => {
|
||||
export const queryLoginHash = (data) => {
|
||||
return request.request({
|
||||
url: '/v1/login/hash',
|
||||
method: 'get',
|
||||
params,
|
||||
url: '/high_city/app/api/auth/msg',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,36 +2,8 @@ import request from 'utils/request'
|
|||
|
||||
export const queryUserInfo = () => {
|
||||
return request.request({
|
||||
url: '/v1/user',
|
||||
url: '/high_city/app/api/user',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export const queryUserAvatarList = () => {
|
||||
return request.request({
|
||||
url: '/v1/avatar/user/list',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export const queryUserInviteList = () => {
|
||||
return request.request({
|
||||
url: '/v1/user/invite/top/list',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export const updateUserAvater = (params) => {
|
||||
return request.request({
|
||||
url: '/v1/user/update/avatar',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const updateUserInfo = (data) => {
|
||||
return request.request({
|
||||
url: '/v1/user/update',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export default queryUserInfo
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import { setUserInfo } from 'state/actions'
|
|||
import { CACHE_INVITE_CODE } from 'config/constants/cacheKey'
|
||||
import useToast from 'hooks/useToast'
|
||||
import { State } from '../types'
|
||||
import { fetchUserInfo } from './index'
|
||||
|
||||
export const useAccount = (ellipsis?: boolean) => {
|
||||
const account = useSelector((state: State) => state.userInfo.account)
|
||||
|
|
@ -42,14 +43,15 @@ export const useSignLogin = () => {
|
|||
const signLogin = async () => {
|
||||
try {
|
||||
const data = await queryLoginHash({ address: unActiveAccount })
|
||||
const signHash = await signMessage(library, unActiveAccount, data.hash)
|
||||
const signHash = await signMessage(library, unActiveAccount, data.msg)
|
||||
const inviteCode = sessionStorage.getItem(CACHE_INVITE_CODE)
|
||||
const userInfo = await userLogin({
|
||||
hash: data.hash,
|
||||
signature: signHash,
|
||||
invite_code: inviteCode,
|
||||
msg: data.msg,
|
||||
sign: signHash,
|
||||
inviteCode,
|
||||
})
|
||||
dispatch(setUserInfo({ ...userInfo.user_info, token: userInfo.token }))
|
||||
await fetchUserInfo()
|
||||
// dispatch(setUserInfo({ ...userInfo.user_info, token: userInfo.token }))
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
// e.message&&toastError(e)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Dispatch } from 'react'
|
||||
import axios from 'axios'
|
||||
// import { clearUserInfo } from 'state/actions'
|
||||
import { CACHE_TOKEN } from 'config/constants/cacheKey'
|
||||
|
||||
// create an axios instance
|
||||
const request = axios.create({
|
||||
|
|
@ -11,12 +12,9 @@ let hasInit = false
|
|||
export const initAxios = (dispatch: Dispatch<any>, toast) => {
|
||||
if (hasInit) return
|
||||
hasInit = true
|
||||
// request interceptor
|
||||
request.interceptors.request.use(
|
||||
(memo: any) => {
|
||||
// do something before request is sent
|
||||
|
||||
memo.headers.token = localStorage.getItem('token')
|
||||
memo.headers.token = localStorage.getItem(CACHE_TOKEN)
|
||||
return memo
|
||||
},
|
||||
(error) => {
|
||||
|
|
@ -33,8 +31,8 @@ export const initAxios = (dispatch: Dispatch<any>, toast) => {
|
|||
toast.toastError('Login expiration')
|
||||
return Promise.reject(new Error('Login expiration'))
|
||||
}
|
||||
toast.toastError(res.msg)
|
||||
return Promise.reject(res.msg || 'Error')
|
||||
toast.toastError(res.message)
|
||||
return Promise.reject(res.message || 'Error')
|
||||
}
|
||||
return res.data
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue