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
+57 -2
View File
@@ -106,6 +106,7 @@ export default function Sleep() {
const [familyMemberDisplayName, setFamilyMemberDisplayName] = useState('')
const [parentInfo, setParentInfo] = useState<Parent | null>(null)
const [wechatMpStatus, setWechatMpStatus] = useState<WechatMpBindStatus | null>(null)
const [isGuest, setIsGuest] = useState(false)
const [isLoadingWechatMp, setIsLoadingWechatMp] = useState(false)
const [isStartingWechatMpBind, setIsStartingWechatMpBind] = useState(false)
const [isAuthorizingPhone, setIsAuthorizingPhone] = useState(false)
@@ -135,10 +136,23 @@ export default function Sleep() {
const loadData = async () => {
if (!getToken()) {
Taro.reLaunch({ url: '/pages/login/index' })
setChildren([])
setBindings([])
setBinding(null)
setCurrentChild(null)
setParentInfo(null)
setFirmwareStatus(null)
setDeviceRole(null)
setRoles([])
setCurrentCardGroup(null)
setFamilyInfo(null)
setWechatMpStatus(null)
setIsGuest(true)
setLoading(false)
return
}
setIsGuest(false)
setLoading(true)
try {
const context = await loadCurrentChildBindingContext()
@@ -798,7 +812,7 @@ export default function Sleep() {
clearSelectedBindingDeviceId()
clearSelectedChildId()
Taro.removeStorageSync('userInfo')
Taro.reLaunch({ url: '/pages/login/index' })
void loadData()
},
})
}
@@ -951,6 +965,47 @@ export default function Sleep() {
)
}
if (isGuest) {
return (
<View className='manage-page'>
<View className='page-header'>
<Text className='page-title'>设置与管理</Text>
</View>
<View className='guest-manage-card'>
<Text className='guest-manage-icon'>⚙️</Text>
<Text className='guest-manage-title'>管理孩子资料和设备</Text>
<Text className='guest-manage-desc'>登录后可创建孩子资料、绑定伴伴设备、管理卡片、设置休眠时间和家庭成员。</Text>
<View
className='guest-manage-btn'
onClick={() => {
Taro.setStorageSync('postLoginRedirect', '/pages/sleep/index')
Taro.navigateTo({ url: '/pages/login/index' })
}}
>
<Text className='guest-manage-btn-text'>登录后管理</Text>
</View>
</View>
<View className='guest-manage-list'>
<View className='guest-manage-item'>
<Text className='guest-manage-item-title'>孩子资料</Text>
<Text className='guest-manage-item-desc'>为不同孩子维护独立设备和会话。</Text>
</View>
<View className='guest-manage-item'>
<Text className='guest-manage-item-title'>设备绑定</Text>
<Text className='guest-manage-item-desc'>扫码或 NFC 绑定伴伴设备。</Text>
</View>
<View className='guest-manage-item'>
<Text className='guest-manage-item-title'>休眠设置</Text>
<Text className='guest-manage-item-desc'>设置设备休眠时间和远程控制。</Text>
</View>
</View>
{systemBanner}
</View>
)
}
const parentDisplayName = parentInfo?.nickname?.trim() || '家长'
const parentPhone = String(parentInfo?.phone || '').trim()
const parentPhoneLabel = parentPhone ? `${parentPhone.slice(0, 3)}****${parentPhone.slice(-4)}` : '未开启'