Skip to content

Commit e990fe7

Browse files
committed
Hide dark mode behind a feature flag for initial deployment
1 parent 8d16b45 commit e990fe7

File tree

5 files changed

+25
-8
lines changed

5 files changed

+25
-8
lines changed

ui/frontend/ConfigMenu.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
ProcessAssembly,
1717
Theme,
1818
} from './types';
19+
import { showThemeSelector } from './selectors';
1920

2021
const MONACO_THEMES = [
2122
'vs', 'vs-dark', 'vscode-dark-plus',
@@ -33,6 +34,8 @@ const ConfigMenu: React.FC = () => {
3334
const demangleAssembly = useAppSelector((state) => state.configuration.demangleAssembly);
3435
const processAssembly = useAppSelector((state) => state.configuration.processAssembly);
3536

37+
const showTheme = useAppSelector(showThemeSelector);
38+
3639
const dispatch = useAppDispatch();
3740
const changeAceTheme = useCallback((t: string) => dispatch(config.changeAceTheme(t)), [dispatch]);
3841
const changeMonacoTheme = useCallback((t: string) => dispatch(config.changeMonacoTheme(t)), [dispatch]);
@@ -101,11 +104,13 @@ const ConfigMenu: React.FC = () => {
101104
</MenuGroup>
102105

103106
<MenuGroup title="UI">
104-
<SelectConfig name="Theme" value={theme} onChange={changeTheme}>
105-
<option value={Theme.System}>System</option>
106-
<option value={Theme.Light}>Light</option>
107-
<option value={Theme.Dark}>Dark</option>
108-
</SelectConfig>
107+
{showTheme && (
108+
<SelectConfig name="Theme" value={theme} onChange={changeTheme}>
109+
{ /* <option value={Theme.System}>System</option> */ }
110+
<option value={Theme.Light}>Light</option>
111+
<option value={Theme.Dark}>Dark</option>
112+
</SelectConfig>
113+
)}
109114
<SelectConfig
110115
name="Orientation"
111116
value={orientation}

ui/frontend/configureStore.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default function configureStore(window: Window) {
2323
const baseUrl = new URL('/', window.location.href).href;
2424
const websocket = websocketMiddleware(window);
2525

26-
const prefersDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
26+
const prefersDarkTheme = false && window.matchMedia('(prefers-color-scheme: dark)').matches;
2727
const initialThemes = prefersDarkTheme ? editorDarkThemes : {};
2828

2929
const initialGlobalState = {

ui/frontend/index.module.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,13 @@
151151
@mixin light-theme-vars;
152152
}
153153

154+
/*
154155
@media (prefers-color-scheme: dark) {
155156
:root {
156157
@mixin dark-theme-vars;
157158
}
158159
}
160+
*/
159161

160162
[data-theme='dark']:root {
161163
@mixin dark-theme-vars;

ui/frontend/reducers/featureFlags.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { createWebsocketResponse } from '../websocketActions';
66
interface State {
77
forced: boolean;
88
showGemThreshold: number;
9+
showThemeThreshold: number;
910
}
1011

1112
const ENABLED = 1.0;
@@ -14,12 +15,14 @@ const DISABLED = -1.0;
1415
const initialState: State = {
1516
forced: false,
1617
showGemThreshold: DISABLED,
18+
showThemeThreshold: DISABLED,
1719
};
1820

1921
const { action: wsFeatureFlags, schema: wsFeatureFlagsSchema } = createWebsocketResponse(
2022
'featureFlags',
2123
z.object({
2224
showGemThreshold: z.number().nullish(),
25+
showThemeThreshold: z.number().nullish(),
2326
}),
2427
);
2528

@@ -30,10 +33,12 @@ const slice = createSlice({
3033
forceEnableAll: (state) => {
3134
state.forced = true;
3235
state.showGemThreshold = ENABLED;
36+
state.showThemeThreshold = ENABLED;
3337
},
3438
forceDisableAll: (state) => {
3539
state.forced = true;
3640
state.showGemThreshold = DISABLED;
41+
state.showThemeThreshold = DISABLED;
3742
},
3843
},
3944
extraReducers: (builder) => {
@@ -42,11 +47,15 @@ const slice = createSlice({
4247
return;
4348
}
4449

45-
const { showGemThreshold } = action.payload;
50+
const { showGemThreshold, showThemeThreshold } = action.payload;
4651

4752
if (showGemThreshold) {
4853
state.showGemThreshold = showGemThreshold;
4954
}
55+
56+
if (showThemeThreshold) {
57+
state.showThemeThreshold = showThemeThreshold;
58+
}
5059
});
5160
},
5261
});

ui/frontend/selectors/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
Orientation,
1111
PrimaryActionAuto,
1212
PrimaryActionCore,
13-
Theme,
1413
Version,
1514
} from '../types';
1615

@@ -445,11 +444,13 @@ const websocket = (state: State) => state.websocket;
445444
const clientFeatureFlagThreshold = createSelector(client, (c) => c.featureFlagThreshold);
446445

447446
const showGemThreshold = createSelector(featureFlags, ff => ff.showGemThreshold);
447+
const showThemeThreshold = createSelector(featureFlags, ff => ff.showThemeThreshold);
448448

449449
const createFeatureFlagSelector = (ff: (state: State) => number) =>
450450
createSelector(clientFeatureFlagThreshold, ff, (c, ff) => c <= ff);
451451

452452
export const showGemSelector = createFeatureFlagSelector(showGemThreshold);
453+
export const showThemeSelector = createFeatureFlagSelector(showThemeThreshold);
453454

454455
export const executeViaWebsocketSelector = createSelector(websocket, (ws) => ws.connected);
455456

0 commit comments

Comments
 (0)