Allow browsing before mini login

This commit is contained in:
stu2not
2026-06-30 14:11:31 +08:00
parent be036ea7fe
commit ec390113ad
11 changed files with 436 additions and 53 deletions

View File

@@ -1,4 +1,4 @@
import { View, Text, Button, Input, Checkbox, CheckboxGroup } from '@tarojs/components'
import { View, Text, Button, Checkbox, CheckboxGroup } from '@tarojs/components'
import { useEffect, useState } from 'react'
import Taro from '@tarojs/taro'
import { getToken, wechatLogin } from '@/services/auth'
@@ -6,7 +6,6 @@ import './index.scss'
export default function Login() {
const [submitting, setSubmitting] = useState(false)
const [nickname, setNickname] = useState('')
const [agreementAccepted, setAgreementAccepted] = useState(false)
useEffect(() => {
@@ -21,12 +20,6 @@ export default function Login() {
return
}
const cachedUserInfo = (Taro.getStorageSync('userInfo') || {}) as {
nickname?: string
}
if (cachedUserInfo.nickname) {
setNickname(cachedUserInfo.nickname)
}
}, [])
const handleLogin = async () => {
@@ -39,12 +32,6 @@ export default function Login() {
return
}
const cachedUserInfo = (Taro.getStorageSync('userInfo') || {}) as {
nickname?: string
avatar_url?: string
}
const normalizedNickname = nickname.trim() || cachedUserInfo.nickname?.trim() || ''
setSubmitting(true)
Taro.showLoading({ title: '登录中...' })
@@ -56,24 +43,18 @@ export default function Login() {
const session = await wechatLogin({
code: loginRes.code,
nickname: normalizedNickname || undefined,
avatar_url: cachedUserInfo.avatar_url,
})
const nextUserInfo = {
nickname: session.nickname || normalizedNickname,
avatar_url: cachedUserInfo.avatar_url,
nickname: session.nickname || '',
}
if (nextUserInfo.nickname || nextUserInfo.avatar_url) {
if (nextUserInfo.nickname) {
Taro.setStorageSync('userInfo', {
nickname: nextUserInfo.nickname,
avatar_url: nextUserInfo.avatar_url,
})
setNickname(nextUserInfo.nickname || '')
} else {
Taro.removeStorageSync('userInfo')
setNickname('')
}
Taro.showToast({ title: '登录成功', icon: 'success' })
@@ -170,22 +151,15 @@ 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 className='login-info-card'>
<Text className='login-info-title'></Text>
<Text className='login-info-desc'></Text>
</View>
<View className='login-btn-wrapper'>
<Button className='login-btn' loading={submitting} disabled={submitting} onClick={handleLogin}>
<Text className='btn-icon'>🌐</Text>
<Text className='btn-text'>{submitting ? '登录中...' : '微信一键登录'}</Text>
<Text className='btn-text'>{submitting ? '登录中...' : '登录后继续'}</Text>
</Button>
</View>