@@ -44,6 +44,10 @@ import OS from '../../util/os/osPreload.preload.js';
4444import { themeChanged } from '../../shims/themeChanged.dom.js' ;
4545import * as Settings from '../../types/Settings.std.js' ;
4646import * as universalExpireTimerUtil from '../../util/universalExpireTimer.preload.js' ;
47+ import type {
48+ HourCycleSettingType ,
49+ ThemeType ,
50+ } from '../../util/preload.preload.js' ;
4751import {
4852 parseSystemTraySetting ,
4953 shouldMinimizeToSystemTray ,
@@ -105,7 +109,6 @@ import type {
105109 StorageAccessType ,
106110 ZoomFactorType ,
107111} from '../../types/Storage.d.ts' ;
108- import type { ThemeType } from '../../util/preload.preload.js' ;
109112import type { WidthBreakpoint } from '../../components/_util.std.js' ;
110113import { DialogType } from '../../types/Dialogs.std.js' ;
111114import { promptOSAuth } from '../../util/promptOSAuth.preload.js' ;
@@ -386,6 +389,8 @@ export function SmartPreferences(): React.JSX.Element | null {
386389 React . useState < boolean > ( ) ;
387390 const [ hasSpellCheck , setSpellCheck ] = React . useState < boolean > ( ) ;
388391 const [ themeSetting , setThemeSetting ] = React . useState < ThemeType > ( ) ;
392+ const [ hourCyclePreference , setHourCyclePreference ] =
393+ React . useState < HourCycleSettingType > ( ) ;
389394
390395 useEffect ( ( ) => {
391396 let canceled = false ;
@@ -432,6 +437,15 @@ export function SmartPreferences(): React.JSX.Element | null {
432437 } ;
433438 drop ( loadThemeSetting ( ) ) ;
434439
440+ const loadHourCyclePreference = async ( ) => {
441+ const value = await window . Events . getHourCyclePreference ( ) ;
442+ if ( canceled ) {
443+ return ;
444+ }
445+ setHourCyclePreference ( value ) ;
446+ } ;
447+ drop ( loadHourCyclePreference ( ) ) ;
448+
435449 return ( ) => {
436450 canceled = true ;
437451 } ;
@@ -472,6 +486,10 @@ export function SmartPreferences(): React.JSX.Element | null {
472486 drop ( window . Events . setThemeSetting ( value ) ) ;
473487 drop ( themeChanged ( ) ) ;
474488 } ;
489+ const onHourCycleChange = ( value : HourCycleSettingType ) => {
490+ setHourCyclePreference ( value ) ;
491+ drop ( window . Events . setHourCyclePreference ( value ) ) ;
492+ } ;
475493
476494 // Async IPC for electron configuration, all can be modified
477495
@@ -923,6 +941,7 @@ export function SmartPreferences(): React.JSX.Element | null {
923941 onSpellCheckChange = { onSpellCheckChange }
924942 onTextFormattingChange = { onTextFormattingChange }
925943 onThemeChange = { onThemeChange }
944+ onHourCycleChange = { onHourCycleChange }
926945 onToggleNavTabsCollapse = { toggleNavTabsCollapse }
927946 onUniversalExpireTimerChange = { onUniversalExpireTimerChange }
928947 onWhoCanFindMeChange = { onWhoCanFindMeChange }
@@ -969,6 +988,7 @@ export function SmartPreferences(): React.JSX.Element | null {
969988 startPlaintextExport = { startPlaintextExport }
970989 theme = { theme }
971990 themeSetting = { themeSetting }
991+ hourCyclePreference = { hourCyclePreference }
972992 universalExpireTimer = { universalExpireTimer }
973993 validateBackup = { validateBackup }
974994 whoCanFindMe = { whoCanFindMe }
0 commit comments