@@ -46,6 +46,10 @@ import {
4646} from "./backend-settings-schema.js" ;
4747import { promptBehaviorSettingsPanel } from "./behavior-settings-panel.js" ;
4848import { promptDashboardDisplayPanel } from "./dashboard-display-panel.js" ;
49+ import {
50+ cloneDashboardSettingsData ,
51+ dashboardSettingsDataEqual ,
52+ } from "./dashboard-settings-data.js" ;
4953import {
5054 type ExperimentalSettingsAction ,
5155 getExperimentalSelectOptions ,
@@ -587,107 +591,20 @@ function buildAccountListPreview(
587591function cloneDashboardSettings (
588592 settings : DashboardDisplaySettings ,
589593) : DashboardDisplaySettings {
590- const layoutMode = resolveMenuLayoutMode ( settings ) ;
591- return {
592- showPerAccountRows : settings . showPerAccountRows ,
593- showQuotaDetails : settings . showQuotaDetails ,
594- showForecastReasons : settings . showForecastReasons ,
595- showRecommendations : settings . showRecommendations ,
596- showLiveProbeNotes : settings . showLiveProbeNotes ,
597- actionAutoReturnMs : settings . actionAutoReturnMs ?? 2_000 ,
598- actionPauseOnKey : settings . actionPauseOnKey ?? true ,
599- menuAutoFetchLimits : settings . menuAutoFetchLimits ?? true ,
600- menuSortEnabled :
601- settings . menuSortEnabled ??
602- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortEnabled ??
603- true ,
604- menuSortMode :
605- settings . menuSortMode ??
606- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortMode ??
607- "ready-first" ,
608- menuSortPinCurrent :
609- settings . menuSortPinCurrent ??
610- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortPinCurrent ??
611- false ,
612- menuSortQuickSwitchVisibleRow :
613- settings . menuSortQuickSwitchVisibleRow ?? true ,
614- uiThemePreset : settings . uiThemePreset ?? "green" ,
615- uiAccentColor : settings . uiAccentColor ?? "green" ,
616- menuShowStatusBadge : settings . menuShowStatusBadge ?? true ,
617- menuShowCurrentBadge : settings . menuShowCurrentBadge ?? true ,
618- menuShowLastUsed : settings . menuShowLastUsed ?? true ,
619- menuShowQuotaSummary : settings . menuShowQuotaSummary ?? true ,
620- menuShowQuotaCooldown : settings . menuShowQuotaCooldown ?? true ,
621- menuShowFetchStatus : settings . menuShowFetchStatus ?? true ,
622- menuShowDetailsForUnselectedRows : layoutMode === "expanded-rows" ,
623- menuLayoutMode : layoutMode ,
624- menuQuotaTtlMs : settings . menuQuotaTtlMs ?? 5 * 60_000 ,
625- menuFocusStyle : settings . menuFocusStyle ?? "row-invert" ,
626- menuHighlightCurrentRow : settings . menuHighlightCurrentRow ?? true ,
627- menuStatuslineFields : [
628- ...normalizeStatuslineFields ( settings . menuStatuslineFields ) ,
629- ] ,
630- } ;
594+ return cloneDashboardSettingsData ( settings , {
595+ resolveMenuLayoutMode,
596+ normalizeStatuslineFields,
597+ } ) ;
631598}
632599
633600function dashboardSettingsEqual (
634601 left : DashboardDisplaySettings ,
635602 right : DashboardDisplaySettings ,
636603) : boolean {
637- return (
638- left . showPerAccountRows === right . showPerAccountRows &&
639- left . showQuotaDetails === right . showQuotaDetails &&
640- left . showForecastReasons === right . showForecastReasons &&
641- left . showRecommendations === right . showRecommendations &&
642- left . showLiveProbeNotes === right . showLiveProbeNotes &&
643- ( left . actionAutoReturnMs ?? 2_000 ) ===
644- ( right . actionAutoReturnMs ?? 2_000 ) &&
645- ( left . actionPauseOnKey ?? true ) === ( right . actionPauseOnKey ?? true ) &&
646- ( left . menuAutoFetchLimits ?? true ) ===
647- ( right . menuAutoFetchLimits ?? true ) &&
648- ( left . menuSortEnabled ??
649- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortEnabled ??
650- true ) ===
651- ( right . menuSortEnabled ??
652- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortEnabled ??
653- true ) &&
654- ( left . menuSortMode ??
655- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortMode ??
656- "ready-first" ) ===
657- ( right . menuSortMode ??
658- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortMode ??
659- "ready-first" ) &&
660- ( left . menuSortPinCurrent ??
661- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortPinCurrent ??
662- false ) ===
663- ( right . menuSortPinCurrent ??
664- DEFAULT_DASHBOARD_DISPLAY_SETTINGS . menuSortPinCurrent ??
665- false ) &&
666- ( left . menuSortQuickSwitchVisibleRow ?? true ) ===
667- ( right . menuSortQuickSwitchVisibleRow ?? true ) &&
668- ( left . uiThemePreset ?? "green" ) === ( right . uiThemePreset ?? "green" ) &&
669- ( left . uiAccentColor ?? "green" ) === ( right . uiAccentColor ?? "green" ) &&
670- ( left . menuShowStatusBadge ?? true ) ===
671- ( right . menuShowStatusBadge ?? true ) &&
672- ( left . menuShowCurrentBadge ?? true ) ===
673- ( right . menuShowCurrentBadge ?? true ) &&
674- ( left . menuShowLastUsed ?? true ) === ( right . menuShowLastUsed ?? true ) &&
675- ( left . menuShowQuotaSummary ?? true ) ===
676- ( right . menuShowQuotaSummary ?? true ) &&
677- ( left . menuShowQuotaCooldown ?? true ) ===
678- ( right . menuShowQuotaCooldown ?? true ) &&
679- ( left . menuShowFetchStatus ?? true ) ===
680- ( right . menuShowFetchStatus ?? true ) &&
681- resolveMenuLayoutMode ( left ) === resolveMenuLayoutMode ( right ) &&
682- ( left . menuQuotaTtlMs ?? 5 * 60_000 ) ===
683- ( right . menuQuotaTtlMs ?? 5 * 60_000 ) &&
684- ( left . menuFocusStyle ?? "row-invert" ) ===
685- ( right . menuFocusStyle ?? "row-invert" ) &&
686- ( left . menuHighlightCurrentRow ?? true ) ===
687- ( right . menuHighlightCurrentRow ?? true ) &&
688- JSON . stringify ( normalizeStatuslineFields ( left . menuStatuslineFields ) ) ===
689- JSON . stringify ( normalizeStatuslineFields ( right . menuStatuslineFields ) )
690- ) ;
604+ return dashboardSettingsDataEqual ( left , right , {
605+ resolveMenuLayoutMode,
606+ normalizeStatuslineFields,
607+ } ) ;
691608}
692609
693610function cloneBackendPluginConfig ( config : PluginConfig ) : PluginConfig {
0 commit comments