Skip to content

Commit 54f2462

Browse files
committed
Moving towards frontend-only solution
Replaced green circle with more neutral icon to indicate enabled experiments Signed-off-by: Danny Kopping <danny@coder.com>
1 parent 5e5f2ac commit 54f2462

File tree

7 files changed

+40
-57
lines changed

7 files changed

+40
-57
lines changed

site/src/api/api.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -949,20 +949,6 @@ export const getAvailableExperiments =
949949
}
950950
};
951951

952-
export const getExperimentsDetail = async (): Promise<
953-
TypesGen.ExperimentDetail[]
954-
> => {
955-
try {
956-
const response = await axios.get("/api/v2/experiments/detail");
957-
return response.data;
958-
} catch (error) {
959-
if (axios.isAxiosError(error) && error.response?.status === 404) {
960-
return [];
961-
}
962-
throw error;
963-
}
964-
};
965-
966952
export const getExternalAuthProvider = async (
967953
provider: string,
968954
): Promise<TypesGen.ExternalAuth> => {

site/src/api/queries/experiments.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,3 @@ export const availableExperiments = () => {
2020
queryFn: async () => API.getAvailableExperiments(),
2121
};
2222
};
23-
24-
export const experimentsDetail = () => {
25-
return {
26-
queryKey: ["experimentsDetail"],
27-
queryFn: async () => API.getExperimentsDetail(),
28-
};
29-
};

site/src/api/typesGenerated.ts

Lines changed: 0 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
import type { FC } from "react";
2-
import { Helmet } from "react-helmet-async";
3-
import { useQuery } from "react-query";
4-
import { deploymentDAUs } from "api/queries/deployment";
5-
import { entitlements } from "api/queries/entitlements";
6-
import { experimentsDetail } from "api/queries/experiments";
7-
import { pageTitle } from "utils/page";
8-
import { useDeploySettings } from "../DeploySettingsLayout";
9-
import { GeneralSettingsPageView } from "./GeneralSettingsPageView";
1+
import type {FC} from "react";
2+
import {Helmet} from "react-helmet-async";
3+
import {useQuery} from "react-query";
4+
import {deploymentDAUs} from "api/queries/deployment";
5+
import {entitlements} from "api/queries/entitlements";
6+
import {availableExperiments, experiments} from "api/queries/experiments";
7+
import {pageTitle} from "utils/page";
8+
import {useDeploySettings} from "../DeploySettingsLayout";
9+
import {GeneralSettingsPageView} from "./GeneralSettingsPageView";
1010

1111
const GeneralSettingsPage: FC = () => {
12-
const { deploymentValues } = useDeploySettings();
12+
const {deploymentValues} = useDeploySettings();
1313
const deploymentDAUsQuery = useQuery(deploymentDAUs());
1414
const entitlementsQuery = useQuery(entitlements());
15-
const experimentsQuery = useQuery(experimentsDetail());
15+
const enabledExperimentsQuery = useQuery(experiments());
16+
const availableExperimentsQuery = useQuery(availableExperiments());
1617

1718
return (
1819
<>
@@ -24,7 +25,8 @@ const GeneralSettingsPage: FC = () => {
2425
deploymentDAUs={deploymentDAUsQuery.data}
2526
deploymentDAUsError={deploymentDAUsQuery.error}
2627
entitlements={entitlementsQuery.data}
27-
experiments={experimentsQuery.data}
28+
enabledExperiments={enabledExperimentsQuery.data ?? []}
29+
safeExperiments={availableExperimentsQuery.data?.safe ?? []}
2830
/>
2931
</>
3032
);

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ const meta: Meta<typeof GeneralSettingsPageView> = {
4040
},
4141
],
4242
deploymentDAUs: MockDeploymentDAUResponse,
43-
experiments: [],
43+
enabledExperiments: [],
44+
safeExperiments: [],
4445
},
4546
};
4647

@@ -102,6 +103,6 @@ export const allExperimentsEnabled: Story = {
102103
hidden: false,
103104
},
104105
],
105-
experiments: [],
106+
safeExperiments: [],
106107
},
107108
};

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {
44
SerpentOption,
55
DAUsResponse,
66
Entitlements,
7-
ExperimentDetail,
7+
Experiments,
88
} from "api/typesGenerated";
99
import {
1010
ActiveUserChart,
@@ -24,28 +24,36 @@ export type GeneralSettingsPageViewProps = {
2424
deploymentDAUs?: DAUsResponse;
2525
deploymentDAUsError: unknown;
2626
entitlements: Entitlements | undefined;
27-
experiments?: ExperimentDetail[];
27+
enabledExperiments: Experiments;
28+
safeExperiments: Experiments;
2829
};
2930

3031
export const GeneralSettingsPageView: FC<GeneralSettingsPageViewProps> = ({
3132
deploymentOptions,
3233
deploymentDAUs,
3334
deploymentDAUsError,
3435
entitlements,
35-
experiments,
36+
enabledExperiments,
37+
safeExperiments,
3638
}) => {
3739
const safe: string[] = [];
3840
const invalid: string[] = [];
3941

40-
if (experiments) {
41-
experiments?.forEach(function (value) {
42-
if (value.invalid) {
43-
invalid.push(value.name);
44-
} else {
45-
safe.push(value.name);
42+
enabledExperiments.forEach(function (exp) {
43+
let found = false;
44+
safeExperiments.forEach(function (name) {
45+
if (exp === name) {
46+
found = true;
47+
return;
4648
}
47-
});
48-
}
49+
})
50+
51+
if (found) {
52+
safe.push(exp);
53+
} else {
54+
invalid.push(exp);
55+
}
56+
});
4957

5058
return (
5159
<>
@@ -84,7 +92,7 @@ export const GeneralSettingsPageView: FC<GeneralSettingsPageViewProps> = ({
8492
))}
8593
</ul>
8694
It is recommended that you remove these experiments from your
87-
configuration as they have no effect.
95+
configuration as they have no effect. See <a href="https://coder.com/docs/v2/latest/cli/server#--experiments" target="_blank">the documentation</a> for more details.
8896
</Alert>
8997
)}
9098
<OptionsTable

site/src/pages/DeploySettingsPage/Option.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { css, type Interpolation, type Theme, useTheme } from "@emotion/react";
2-
import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined";
2+
import LabelImportant from "@mui/icons-material/LabelImportant";
33
import type { FC, HTMLAttributes, PropsWithChildren } from "react";
44
import { DisabledBadge, EnabledBadge } from "components/Badges/Badges";
55
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
@@ -91,11 +91,11 @@ export const OptionValue: FC<OptionValueProps> = (props) => {
9191
}}
9292
>
9393
{isEnabled && (
94-
<CheckCircleOutlined
94+
<LabelImportant
9595
css={(theme) => ({
9696
width: 16,
9797
height: 16,
98-
color: theme.palette.success.light,
98+
color: theme.palette.info.light,
9999
margin: "0 8px",
100100
})}
101101
/>

0 commit comments

Comments
 (0)