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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy