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

@@ -62,6 +62,11 @@ function formatSleepRange(status: DeviceStatus | null): string {
return `${start}-${end}`
}
function goLoginWithRedirect(url = '/pages/device/index') {
Taro.setStorageSync('postLoginRedirect', url)
Taro.navigateTo({ url: '/pages/login/index' })
}
function formatAlarmTime(value?: string | null): string {
if (!value) return '--'
const date = new Date(value)
@@ -129,6 +134,7 @@ export default function Device() {
const [isSavingVolume, setIsSavingVolume] = useState(false)
const [sleepWakePending, setSleepWakePending] = useState<'on' | 'off' | null>(null)
const [volumeValue, setVolumeValue] = useState(0)
const [isGuest, setIsGuest] = useState(false)
const volumeCommandInFlightRef = useRef(false)
useDidShow(() => {
@@ -137,11 +143,18 @@ export default function Device() {
const loadDeviceInfo = async () => {
if (!getToken()) {
Taro.reLaunch({ url: '/pages/login/index' })
setBinding(null)
setChild(null)
setDeviceStatus(null)
setDeviceAlarms([])
setVolumeValue(0)
setIsGuest(true)
setIsLoading(false)
return
}
setIsLoading(true)
setIsGuest(false)
try {
const context = await loadCurrentChildBindingContext()
setChild(context.currentChild)
@@ -264,6 +277,52 @@ export default function Device() {
)
}
if (isGuest) {
return (
<View className='device-page'>
<View className='guest-hero'>
<View className='guest-device-icon'>
<Image className='robot-img' src={require('../../assets/tab-icons/robot.png')} mode='aspectFit' />
</View>
<Text className='guest-title'></Text>
<Text className='guest-subtitle'></Text>
</View>
<View className='guest-feature-grid'>
<View className='guest-feature-card'>
<Image className='guest-feature-icon' src={require('../../assets/tab-icons/device-icon.png')} mode='aspectFit' />
<Text className='guest-feature-title'></Text>
<Text className='guest-feature-desc'></Text>
</View>
<View className='guest-feature-card'>
<Image className='guest-feature-icon' src={require('../../assets/tab-icons/location-icon.png')} mode='aspectFit' />
<Text className='guest-feature-title'></Text>
<Text className='guest-feature-desc'></Text>
</View>
<View className='guest-feature-card'>
<Image className='guest-feature-icon' src={require('../../assets/tab-icons/chat-icon.png')} mode='aspectFit' />
<Text className='guest-feature-title'></Text>
<Text className='guest-feature-desc'></Text>
</View>
<View className='guest-feature-card'>
<Image className='guest-feature-icon' src={require('../../assets/tab-icons/manage-icon.png')} mode='aspectFit' />
<Text className='guest-feature-title'></Text>
<Text className='guest-feature-desc'></Text>
</View>
</View>
<View className='guest-action-card'>
<Text className='guest-action-title'></Text>
<Text className='guest-action-desc'></Text>
<View className='guest-primary-btn' onClick={() => goLoginWithRedirect('/pages/device/index')}>
<Text className='guest-primary-btn-text'></Text>
</View>
</View>
{systemBanner}
</View>
)
}
if (!child) {
return (
<View className='device-page'>