MCPcopy Index your code
hub / github.com/coder/coder / migrateLegacyPreference

Function migrateLegacyPreference

site/src/theme/themeMode.ts:73–107  ·  view source on GitHub ↗
(
	settings: AppearanceSettingsLike,
)

Source from the content-addressed store, hash-verified

71 * state, applying the one-time migration of legacy `auto-*` values.
72 */
73export const migrateLegacyPreference = (
74 settings: AppearanceSettingsLike,
75): ThemeModeState => {
76 const mode = settings.theme_mode;
77
78 if (mode === "sync") {
79 return {
80 mode: "sync",
81 light: coerceConcrete(settings.theme_light, "light"),
82 dark: coerceConcrete(settings.theme_dark, "dark"),
83 };
84 }
85
86 if (mode === "single") {
87 return {
88 mode: "single",
89 theme: coerceConcrete(settings.theme_preference, DEFAULT_THEME),
90 };
91 }
92
93 // No recognized theme_mode. Inspect the legacy theme_preference.
94 const legacySync = legacyAutoToSync(settings.theme_preference);
95 if (legacySync) {
96 return {
97 mode: "sync",
98 light: coerceConcrete(settings.theme_light, legacySync.light),
99 dark: coerceConcrete(settings.theme_dark, legacySync.dark),
100 };
101 }
102
103 return {
104 mode: "single",
105 theme: coerceConcrete(settings.theme_preference, DEFAULT_THEME),
106 };
107};
108
109export const resolveActiveThemeName = (
110 state: ThemeModeState,

Callers 3

themeMode.test.tsFile · 0.90
toFormValuesFunction · 0.90
ThemeProviderFunction · 0.90

Calls 2

coerceConcreteFunction · 0.85
legacyAutoToSyncFunction · 0.85

Tested by

no test coverage detected