合入小程序修改内容
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { View, Text, Button } from '@tarojs/components'
|
||||
import { View, Text, Button, Input } from '@tarojs/components'
|
||||
import { useEffect, useState } from 'react'
|
||||
import Taro from '@tarojs/taro'
|
||||
import { getToken, wechatLogin } from '@/services/auth'
|
||||
@@ -6,16 +6,31 @@ import './index.scss'
|
||||
|
||||
export default function Login() {
|
||||
const [submitting, setSubmitting] = useState(false)
|
||||
const [nickname, setNickname] = useState('')
|
||||
|
||||
useEffect(() => {
|
||||
if (getToken()) {
|
||||
Taro.reLaunch({ url: '/pages/device/index' })
|
||||
return
|
||||
}
|
||||
|
||||
const cachedUserInfo = (Taro.getStorageSync('userInfo') || {}) as {
|
||||
nickname?: string
|
||||
}
|
||||
if (cachedUserInfo.nickname) {
|
||||
setNickname(cachedUserInfo.nickname)
|
||||
}
|
||||
}, [])
|
||||
|
||||
const handleLogin = async () => {
|
||||
if (submitting) return
|
||||
|
||||
const cachedUserInfo = (Taro.getStorageSync('userInfo') || {}) as {
|
||||
nickname?: string
|
||||
avatar_url?: string
|
||||
}
|
||||
const normalizedNickname = nickname.trim() || cachedUserInfo.nickname?.trim() || ''
|
||||
|
||||
setSubmitting(true)
|
||||
Taro.showLoading({ title: '登录中...' })
|
||||
|
||||
@@ -25,35 +40,26 @@ export default function Login() {
|
||||
throw new Error('未获取到微信登录凭证')
|
||||
}
|
||||
|
||||
let userInfo:
|
||||
| {
|
||||
nickName?: string
|
||||
avatarUrl?: string
|
||||
}
|
||||
| null = null
|
||||
|
||||
try {
|
||||
const profileRes = await Taro.getUserProfile({
|
||||
desc: '用于完善家长资料展示',
|
||||
})
|
||||
userInfo = profileRes.userInfo || null
|
||||
} catch (error) {
|
||||
console.log('[login] getUserProfile skipped:', error)
|
||||
}
|
||||
|
||||
await wechatLogin({
|
||||
const session = await wechatLogin({
|
||||
code: loginRes.code,
|
||||
nickname: userInfo?.nickName,
|
||||
avatar_url: userInfo?.avatarUrl,
|
||||
nickname: normalizedNickname || undefined,
|
||||
avatar_url: cachedUserInfo.avatar_url,
|
||||
})
|
||||
|
||||
if (userInfo) {
|
||||
const nextUserInfo = {
|
||||
nickname: session.nickname || normalizedNickname,
|
||||
avatar_url: cachedUserInfo.avatar_url,
|
||||
}
|
||||
|
||||
if (nextUserInfo.nickname || nextUserInfo.avatar_url) {
|
||||
Taro.setStorageSync('userInfo', {
|
||||
nickname: userInfo.nickName,
|
||||
avatar_url: userInfo.avatarUrl,
|
||||
nickname: nextUserInfo.nickname,
|
||||
avatar_url: nextUserInfo.avatar_url,
|
||||
})
|
||||
setNickname(nextUserInfo.nickname || '')
|
||||
} else {
|
||||
Taro.removeStorageSync('userInfo')
|
||||
setNickname('')
|
||||
}
|
||||
|
||||
Taro.showToast({ title: '登录成功', icon: 'success' })
|
||||
@@ -100,6 +106,18 @@ export default function Login() {
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View className='nickname-card'>
|
||||
<Text className='nickname-label'>家长昵称</Text>
|
||||
<Input
|
||||
className='nickname-input'
|
||||
type='nickname'
|
||||
maxlength={64}
|
||||
placeholder='请输入家长昵称'
|
||||
value={nickname}
|
||||
onInput={(event) => setNickname(event.detail.value)}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<View className='login-btn-wrapper'>
|
||||
<Button className='login-btn' loading={submitting} disabled={submitting} onClick={handleLogin}>
|
||||
<Text className='btn-icon'>🌐</Text>
|
||||
|
||||
Reference in New Issue
Block a user