@@ -90,6 +90,7 @@ export default function DeviceSettings() {
9090 const slideAnim = useRef ( new Animated . Value ( - 50 ) ) . current
9191 const { theme, themed} = useAppTheme ( )
9292 const { status} = useCoreStatus ( )
93+ const isGlassesConnected = Boolean ( status . glasses_info ?. model_name )
9394 const [ defaultWearable , setDefaultWearable ] = useSetting ( SETTINGS_KEYS . default_wearable )
9495 const [ buttonMode , setButtonMode ] = useSetting ( SETTINGS_KEYS . button_mode )
9596 const [ preferredMic , setPreferredMic ] = useSetting ( SETTINGS_KEYS . preferred_mic )
@@ -221,53 +222,60 @@ export default function DeviceSettings() {
221222 ) }
222223
223224 { /* Battery Status Section */ }
224- { status . glasses_info ?. battery_level !== undefined && status . glasses_info . battery_level !== - 1 && (
225- < View style = { themed ( $settingsGroup ) } >
226- < Text style = { [ themed ( $subtitle ) , { marginBottom : theme . spacing . xs } ] } > Battery Status</ Text >
227- { /* Glasses Battery */ }
228- { status . glasses_info . battery_level !== - 1 && (
229- < View
230- style = { { flexDirection : "row" , alignItems : "center" , justifyContent : "space-between" , paddingVertical : 4 } } >
231- < View style = { { flexDirection : "row" , alignItems : "center" } } >
232- < GlassesIcon size = { 20 } isDark = { theme . isDark } />
233- < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xs } } > Glasses</ Text >
234- </ View >
235- < View style = { { flexDirection : "row" , alignItems : "center" } } >
236- < Icon icon = "battery" size = { 16 } color = { theme . colors . text } />
237- < Text style = { { color : theme . colors . text , marginLeft : 4 , fontWeight : "500" } } >
238- { status . glasses_info . battery_level } %
239- </ Text >
240- </ View >
241- </ View >
242- ) }
243-
244- { /* Case Battery */ }
245- { status . glasses_info . case_battery_level !== undefined &&
246- status . glasses_info . case_battery_level !== - 1 &&
247- ! status . glasses_info . case_removed && (
225+ { isGlassesConnected &&
226+ status . glasses_info ?. battery_level !== undefined &&
227+ status . glasses_info . battery_level !== - 1 && (
228+ < View style = { themed ( $settingsGroup ) } >
229+ < Text style = { [ themed ( $subtitle ) , { marginBottom : theme . spacing . xs } ] } > Battery Status</ Text >
230+ { /* Glasses Battery */ }
231+ { status . glasses_info . battery_level !== - 1 && (
248232 < View
249233 style = { {
250234 flexDirection : "row" ,
251235 alignItems : "center" ,
252236 justifyContent : "space-between" ,
253- paddingVertical : theme . spacing . xs ,
237+ paddingVertical : 4 ,
254238 } } >
255239 < View style = { { flexDirection : "row" , alignItems : "center" } } >
256- < CaseIcon size = { 20 } isCharging = { status . glasses_info . case_charging } isDark = { theme . isDark } />
257- < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xxs } } >
258- Case { status . glasses_info . case_charging ? "(Charging)" : "" }
259- </ Text >
240+ < GlassesIcon size = { 20 } isDark = { theme . isDark } />
241+ < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xs } } > Glasses</ Text >
260242 </ View >
261243 < View style = { { flexDirection : "row" , alignItems : "center" } } >
262244 < Icon icon = "battery" size = { 16 } color = { theme . colors . text } />
263- < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xxs , fontWeight : "500" } } >
264- { status . glasses_info . case_battery_level } %
245+ < Text style = { { color : theme . colors . text , marginLeft : 4 , fontWeight : "500" } } >
246+ { status . glasses_info . battery_level } %
265247 </ Text >
266248 </ View >
267249 </ View >
268250 ) }
269- </ View >
270- ) }
251+
252+ { /* Case Battery */ }
253+ { status . glasses_info . case_battery_level !== undefined &&
254+ status . glasses_info . case_battery_level !== - 1 &&
255+ ! status . glasses_info . case_removed && (
256+ < View
257+ style = { {
258+ flexDirection : "row" ,
259+ alignItems : "center" ,
260+ justifyContent : "space-between" ,
261+ paddingVertical : theme . spacing . xs ,
262+ } } >
263+ < View style = { { flexDirection : "row" , alignItems : "center" } } >
264+ < CaseIcon size = { 20 } isCharging = { status . glasses_info . case_charging } isDark = { theme . isDark } />
265+ < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xxs } } >
266+ Case { status . glasses_info . case_charging ? "(Charging)" : "" }
267+ </ Text >
268+ </ View >
269+ < View style = { { flexDirection : "row" , alignItems : "center" } } >
270+ < Icon icon = "battery" size = { 16 } color = { theme . colors . text } />
271+ < Text style = { { color : theme . colors . text , marginLeft : theme . spacing . xxs , fontWeight : "500" } } >
272+ { status . glasses_info . case_battery_level } %
273+ </ Text >
274+ </ View >
275+ </ View >
276+ ) }
277+ </ View >
278+ ) }
271279
272280 { hasGallery ( defaultWearable ) && (
273281 < RouteButton
@@ -277,7 +285,7 @@ export default function DeviceSettings() {
277285 />
278286 ) }
279287
280- { hasBrightness ( defaultWearable ) && (
288+ { hasBrightness ( defaultWearable ) && isGlassesConnected && (
281289 < View style = { themed ( $settingsGroup ) } >
282290 < ToggleSetting
283291 label = "Auto Brightness"
@@ -461,7 +469,7 @@ export default function DeviceSettings() {
461469 ) }
462470
463471 { /* Show device info for glasses */ }
464- { defaultWearable && (
472+ { defaultWearable && isGlassesConnected && (
465473 < InfoSection
466474 title = "Device Information"
467475 items = { [
@@ -473,7 +481,7 @@ export default function DeviceSettings() {
473481 ) }
474482
475483 { /* OTA Progress Section - Only show for Mentra Live glasses */ }
476- { defaultWearable && defaultWearable . toLowerCase ( ) . includes ( "live" ) && (
484+ { defaultWearable && isGlassesConnected && defaultWearable . toLowerCase ( ) . includes ( "live" ) && (
477485 < OtaProgressSection otaProgress = { status . ota_progress } />
478486 ) }
479487
@@ -483,7 +491,7 @@ export default function DeviceSettings() {
483491 onPress = { ( ) => push ( "/settings/dashboard" ) }
484492 />
485493
486- { defaultWearable && defaultWearable !== "Simulated Glasses" && (
494+ { defaultWearable && isGlassesConnected && defaultWearable !== "Simulated Glasses" && (
487495 < ActionButton
488496 label = { translate ( "settings:disconnectGlasses" ) }
489497 variant = "destructive"
0 commit comments