8000 fix: fix types · coder/coder@5a30f45 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5a30f45

Browse files
committed
fix: fix types
1 parent 9548678 commit 5a30f45

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,34 @@ import Radio from "@mui/material/Radio";
66
import RadioGroup from "@mui/material/RadioGroup";
77
import { API } from "api/api";
88
import { DetailedError } from "api/errors";
9-
import type {
10-
DynamicParametersRequest,
11-
DynamicParametersResponse,
12-
PreviewParameter,
13-
Template
9+
import type {
10+
DynamicParametersRequest,
11+
DynamicParametersResponse,
12+
PreviewParameter,
13+
Template
1414
} from "api/typesGenerated";
1515
import { FormSection, VerticalForm } from "components/Form/Form";
1616
import { Loader } from "components/Loader/Loader";
1717
import { useClipboard } from "hooks/useClipboard";
1818
import { DynamicParameter } from "modules/workspaces/DynamicParameter/DynamicParameter";
1919
import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout";
2020
import { type FC, useCallback, useEffect, useRef, useState } from "react";
21+
import React from "react";
2122
import { Helmet } from "react-helmet-async";
2223
import { useQuery } from "react-query";
2324
import { useSearchParams } from "react-router-dom";
2425
import { pageTitle } from "utils/page";
25-
import { getAutofillParameters } from "utils/richParameters";
26+
import { getAutofillParameters, type AutofillBuildParameter as ImportedAutofillBuildParameter } from "utils/richParameters";
2627

2728
type ButtonValues = Record<string, string>;
2829

30+
// Use the imported type instead of redefining it
31+
type AutofillBuildParameter = ImportedAutofillBuildParameter;
32+
2933
const TemplateEmbedPageExperimental: FC = () => {
3034
const { template } = useTemplateLayoutContext();
3135
const [searchParams] = useSearchParams();
32-
36+
3337
return (
3438
<>
3539
<Helmet>
@@ -45,7 +49,7 @@ interface TemplateEmbedPageViewProps {
4549
searchParams: URLSearchParams;
4650
}
4751

48-
const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
52+
const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
4953
template,
5054
searchParams
5155
}) => {
@@ -54,7 +58,7 @@ const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
5458
const ws = useRef<WebSocket | null>(null);
5559
const [wsError, setWsError] = useState<Error | null>(null);
5660
const [buttonValues, setButtonValues] = useState<ButtonValues | undefined>();
57-
61+
5862
// Get the current user
5963
const { data: me } = useQuery({
6064
queryKey: ["me"],
@@ -136,45 +140,45 @@ const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
136140
const initValues: ButtonValues = {
137141
mode,
138142
};
139-
143+
140144
// Filter only parameters used for workspace creation
141145
const workspaceParams = currentResponse.parameters.filter(param => !param.ephemeral);
142-
146+
143147
// Apply autofill parameters from URL if available
144148
for (const parameter of workspaceParams) {
145149
const autofillParam = autofillParameters.find(p => p.name === parameter.name);
146-
150+
147151
if (autofillParam) {
148152
// Use the value from URL parameters
149153
initValues[`param.${parameter.name}`] = autofillParam.value;
150154
} else {
151155
// Use the default or current value from the parameter
152-
const paramValue = parameter.value.valid
153-
? parameter.value.value
156+
const paramValue = parameter.value.valid
157+
? parameter.value.value
154158
: (parameter.default_value.valid ? parameter.default_value.value : "");
155-
159+
156160
initValues[`param.${parameter.name}`] = paramValue;
157161
}
158162
}
159-
163+
160164
setButtonValues(initValues);
161-
165+
162166
// Send initial message to get updated parameters based on autofill values
163167
if (workspaceParams.length > 0) {
164168
const paramInputs: Record<string, string> = {};
165-
169+
166170
for (const param of workspaceParams) {
167171
const autofillParam = autofillParameters.find(p => p.name === param.name);
168-
172+
169173
if (autofillParam) {
170174
paramInputs[param.name] = autofillParam.value;
171175
} else {
172-
paramInputs[param.name] = param.value.valid
173-
? param.value.value
176+
paramInputs[param.name] = param.value.valid
177+
? param.value.value
174178
: (param.default_value.valid ? param.default_value.value : "");
175179
}
176180
}
177-
181+
178182
sendMessage(paramInputs);
179183
}
180184
}
@@ -240,7 +244,7 @@ const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
240244
</FormSection>
241245

242246
{currentResponse?.parameters && (
243-
<ParametersList
247+
<ParametersList
244248
parameters={currentResponse.parameters}
245249
buttonValues={buttonValues || {}}
246250
setButtonValues={setButtonValues}
@@ -251,7 +255,7 @@ const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
251255
</VerticalForm>
252256
</div>
253257

254-
<ButtonPreview
258+
<ButtonPreview
255259
template={template}
256260
buttonValues={buttonValues}
257261
/>
@@ -262,9 +266,9 @@ const TemplateEmbedPageView: FC<TemplateEmbedPageViewProps> = ({
262266
};
263267

264268
interface ParametersListProps {
265-
parameters: PreviewParameter[];
269+
parameters: readonly PreviewParameter[];
266270
buttonValues: ButtonValues;
267-
setButtonValues: (values: ButtonValues | ((prev: ButtonValues) => ButtonValues)) => void;
271+
setButtonValues: React.Dispatch<React.SetStateAction<ButtonValues | undefined>>;
268272
sendMessage: (values: Record<string, string>) => void;
269273
autofillParameters: AutofillBuildParameter[];
270274
}
@@ -278,7 +282,7 @@ const ParametersList: FC<ParametersListProps> = ({
278282
}) => {
279283
// Filter parameters to only include those used for workspace creation
280284
const workspaceParameters = parameters.filter(param => !param.ephemeral);
281-
285+
282286
if (workspaceParameters.length === 0) {
283287
return null;
284288
}
@@ -287,10 +291,10 @@ const ParametersList: FC<ParametersListProps> = ({
287291
const handleParameterChange = (paramName: string, value: string) => {
288292
// Update button values
289293
setButtonValues((prev) => ({
290-
...prev,
294+
...prev || {},
291295
[`param.${paramName}`]: value,
292296
}));
293-
297+
294298
// Send updated parameters to the server
295299
const paramValues: Record<string, string> = {};
296300
for (const param of workspaceParameters) {
@@ -309,7 +313,7 @@ const ParametersList: FC<ParametersListProps> = ({
309313
{workspaceParameters.map((parameter) => {
310314
const autofillParam = autofillParameters.find(p => p.name === parameter.name);
311315
const isAutofilled = !!autofillParam;
312-
316+
313317
return (
314318
<DynamicParameter
315319
key={parameter.name}
@@ -402,4 +406,4 @@ function getClipboardCopyContent(
402406

403407
// Function is now imported from utils/richParameters.ts
404408

405-
export default TemplateEmbedPageExperimental;
409+
export default TemplateEmbedPageExperimental;

0 commit comments

Comments
 (0)
0