fix: show placeholder for zero battery

This commit is contained in:
stu2not
2026-06-02 14:40:44 +08:00
parent 57bafb003d
commit aea7a3fe42

View File

@@ -41,6 +41,14 @@ function getSignalLabel(value?: number | null): string {
return '弱'
}
function formatBatteryDisplay(value?: number | null): { text: string; showPercent: boolean } {
if (value === null || value === undefined) return { text: '--', showPercent: false }
const normalized = Number(value)
if (!Number.isFinite(normalized)) return { text: '--', showPercent: false }
if (normalized === 0) return { text: '*', showPercent: false }
return { text: String(normalized), showPercent: true }
}
function formatSleepRange(status: DeviceStatus | null): string {
const start = status?.disable_time_start?.trim()
const end = status?.disable_time_end?.trim()
@@ -284,7 +292,7 @@ export default function Device() {
const childName = child.child_name || '未设置'
const pageTitle = `${childName} 的伴伴`
const batteryValue = deviceStatus?.power ?? deviceStatus?.battery_pct ?? null
const batteryDisplay = batteryValue === null || batteryValue === undefined ? '--' : String(batteryValue)
const batteryDisplay = formatBatteryDisplay(batteryValue)
const signalLabel = getSignalLabel(deviceStatus?.signal)
const versionLabel = deviceStatus?.version || '--'
const coordinateLabel = formatCoordinates(deviceStatus)
@@ -307,8 +315,8 @@ export default function Device() {
</View>
<View className='battery-section'>
<Text className='battery-percent'>
{batteryDisplay}
{batteryDisplay !== '--' && <Text className='percent'>%</Text>}
{batteryDisplay.text}
{batteryDisplay.showPercent && <Text className='percent'>%</Text>}
</Text>
<Text className='battery-label'></Text>
</View>