@@ -231,8 +231,18 @@ export default function SettingsSidebar() {
231
231
[ send , setDeveloperMode ] ,
232
232
) ;
233
233
234
- const handleBacklightSettingChange = useCallback ( ( settings : BacklightSettings ) => {
235
- send ( "setBacklightSettings" , { settings } , resp => {
234
+ const handleBacklightSettingsChange = ( settings : BacklightSettings ) => {
235
+ // If the user has set the display to dim after it turns off, set the dim_after
236
+ // value to never.
237
+ if ( settings . dim_after > settings . off_after && settings . off_after != 0 ) {
238
+ settings . dim_after = 0 ;
239
+ }
240
+
241
+ setBacklightSettings ( settings ) ;
242
+ }
243
+
244
+ const handleBacklightSettingsSave = ( ) => {
245
+ send ( "setBacklightSettings" , { params : settings . backlightSettings } , resp => {
236
246
if ( "error" in resp ) {
237
247
notifications . error (
238
248
`Failed to set backlight settings: ${ resp . error . data || "Unknown error" } ` ,
@@ -241,7 +251,7 @@ export default function SettingsSidebar() {
241
251
}
242
252
notifications . success ( "Backlight settings updated successfully" ) ;
243
253
} ) ;
244
- } , [ send ] ) ;
254
+ } ;
245
255
246
256
const handleUpdateSSHKey = useCallback ( ( ) => {
247
257
send ( "setSSHKeyState" , { sshKey } , resp => {
@@ -847,26 +857,72 @@ export default function SettingsSidebar() {
847
857
/>
848
858
</ div >
849
859
< SettingsItem title = "Display Brightness" description = "Set the brightness of the display" >
850
- { /* TODO: Allow the user to pick any value between 0 and 100 */ }
851
860
< SelectMenuBasic
852
861
size = "SM"
853
862
label = ""
854
863
value = { settings . backlightSettings . max_brightness . toString ( ) }
855
864
options = { [
856
865
{ value : "0" , label : "Off" } ,
857
866
{ value : "10" , label : "Low" } ,
858
- { value : "50 " , label : "Medium" } ,
859
- { value : "100 " , label : "High" } ,
867
+ { value : "35 " , label : "Medium" } ,
868
+ { value : "64 " , label : "High" } ,
860
869
] }
861
870
onChange = { e => {
862
- handleBacklightSettingChange ( {
863
- max_brightness : parseInt ( e . target . value ) ,
864
- dim_after : settings . backlightSettings . dim_after ,
865
- off_after : settings . backlightSettings . off_after ,
866
- } ) ;
871
+ settings . backlightSettings . max_brightness = parseInt ( e . target . value )
872
+ handleBacklightSettingsChange ( settings . backlightSettings ) ;
867
873
} }
868
874
/>
869
875
</ SettingsItem >
876
+ { settings . backlightSettings . max_brightness != 0 && (
877
+ < >
878
+ < SettingsItem title = "Dim Display After" description = "Set how long to wait before dimming the display" >
879
+ < SelectMenuBasic
880
+ size = "SM"
881
+ label = ""
882
+ value = { settings . backlightSettings . dim_after . toString ( ) }
883
+ options = { [
884
+ { value : "0" , label : "Never" } ,
885
+ { value : "60" , label : "1 Minute" } ,
886
+ { value : "300" , label : "5 Minutes" } ,
887
+ { value : "600" , label : "10 Minutes" } ,
888
+ { value : "1800" , label : "30 Minutes" } ,
889
+ { value : "3600" , label : "1 Hour" } ,
890
+ ] }
891
+ onChange = { e => {
892
+ settings . backlightSettings . dim_after = parseInt ( e . target . value )
893
+ handleBacklightSettingsChange ( settings . backlightSettings ) ;
894
+ } }
895
+ />
896
+ </ SettingsItem >
897
+ < SettingsItem title = "Turn off Display After" description = "Set how long to wait before turning off the display" >
898
+ < SelectMenuBasic
899
+ size = "SM"
900
+ label = ""
901
+ value = { settings . backlightSettings . off_after . toString ( ) }
902
+ options = { [
903
+ { value : "0" , label : "Never" } ,
904
+ { value : "300" , label : "5 Minutes" } ,
905
+ { value : "600" , label : "10 Minutes" } ,
906
+ { value : "1800" , label : "30 Minutes" } ,
907
+ { value : "3600" , label : "1 Hour" } ,
908
+ ] }
909
+ onChange = { e => {
910
+ settings . backlightSettings . off_after = parseInt ( e . target . value )
911
+ handleBacklightSettingsChange ( settings . backlightSettings ) ;
912
+ } }
913
+ />
914
+ </ SettingsItem >
915
+ </ >
916
+ ) }
917
+ < p className = "text-xs text-slate-600 dark:text-slate-400" >
918
+ The display will wake up when the connection state changes, or when touched.
919
+ </ p >
920
+ < Button
921
+ size = "SM"
922
+ theme = "primary"
923
+ text = "Save Display Settings"
924
+ onClick = { handleBacklightSettingsSave }
925
+ />
870
926
< div className = "h-[1px] w-full bg-slate-800/10 dark:bg-slate-300/20" />
871
927
< div className = "pb-2 space-y-4" >
872
928
< SectionHeader
0 commit comments