Skip to content

Commit 0d9d751

Browse files
committed
refactor: improve preset selection logic in workspace creation
Replace findIndex with find() to avoid -1 edge case and consolidate preset initialization into single useEffect for better maintainability. Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent 83192a7 commit 0d9d751

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -152,32 +152,31 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
152152
const [presetOptions, setPresetOptions] = useState([
153153
{ label: "None", value: "" },
154154
]);
155+
const [selectedPresetIndex, setSelectedPresetIndex] = useState(0);
156+
// Build options and keep default label/value in sync
155157
useEffect(() => {
156-
setPresetOptions([
158+
const options = [
157159
{ label: "None", value: "" },
158-
...presets.map((preset) => ({
159-
label: preset.Default ? `${preset.Name} (Default)` : preset.Name,
160-
value: preset.ID,
160+
...presets.map((p) => ({
161+
label: p.Default ? `${p.Name} (Default)` : p.Name,
162+
value: p.ID,
161163
})),
162-
]);
163-
}, [presets]);
164-
165-
const [selectedPresetIndex, setSelectedPresetIndex] = useState(0);
166-
167-
// Set default preset when presets are loaded
168-
useEffect(() => {
169-
const defaultPreset = presets.find((preset) => preset.Default);
164+
];
165+
setPresetOptions(options);
166+
const defaultPreset = presets.find((p) => p.Default);
170167
if (defaultPreset) {
171-
// +1 because "None" is at index 0
172-
const defaultIndex =
173-
presets.findIndex((preset) => preset.ID === defaultPreset.ID) + 1;
174-
setSelectedPresetIndex(defaultIndex);
168+
const idx = presets.indexOf(defaultPreset) + 1; // +1 for "None"
169+
setSelectedPresetIndex(idx);
170+
form.setFieldValue("template_version_preset_id", defaultPreset.ID);
171+
} else {
172+
setSelectedPresetIndex(0); // Explicitly set to "None"
173+
form.setFieldValue("template_version_preset_id", "");
175174
}
176-
}, [presets]);
175+
}, [presets, form.setFieldValue]);
176+
177177
const [presetParameterNames, setPresetParameterNames] = useState<string[]>(
178178
[],
179179
);
180-
181180
useEffect(() => {
182181
const selectedPresetOption = presetOptions[selectedPresetIndex];
183182
let selectedPreset: TypesGen.Preset | undefined;

0 commit comments

Comments
 (0)