Skip to content

Commit 9f495c3

Browse files
masseaterclaude
andcommitted
refactor(sdd-webapp): extract constants and unify type declarations
- Add REMOVE_PROJECT_VALUE constant in ProjectSelector - Add DEFAULT_ERROR_MESSAGE constant in useSpecs - Change interface to type for ProjectSelectorProps - Use getErrorMessage in ProjectSelector handleAdd 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent a2888a8 commit 9f495c3

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

packages/sdd-webapp/src/client/components/ProjectSelector.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ import {
77
PopoverTrigger,
88
} from "@/components/ui/popover";
99
import type { Project } from "../../types";
10+
import { getErrorMessage } from "../lib/error";
1011

11-
interface ProjectSelectorProps {
12+
const REMOVE_PROJECT_VALUE = "__remove__" as const;
13+
14+
type ProjectSelectorProps = {
1215
projects: Project[];
1316
selectedProject: Project | null;
1417
onSelect: (project: Project | null) => void;
1518
onAdd: (path: string, name?: string) => Promise<Project>;
1619
onRemove: (id: string) => Promise<void>;
17-
}
20+
};
1821

1922
export function ProjectSelector({
2023
projects,
@@ -31,7 +34,7 @@ export function ProjectSelector({
3134

3235
const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {
3336
const value = e.target.value;
34-
if (value === "__remove__") {
37+
if (value === REMOVE_PROJECT_VALUE) {
3538
if (
3639
selectedProject &&
3740
confirm(`Remove "${selectedProject.name}" from the list?`)
@@ -57,7 +60,7 @@ export function ProjectSelector({
5760
setError(null);
5861
setShowAddForm(false);
5962
} catch (err) {
60-
setError(err instanceof Error ? err.message : "Failed to add project");
63+
setError(getErrorMessage(err, "Failed to add project"));
6164
} finally {
6265
setSubmitting(false);
6366
}
@@ -77,7 +80,7 @@ export function ProjectSelector({
7780
</option>
7881
))}
7982
{selectedProject && (
80-
<option value="__remove__">- Remove Current Project</option>
83+
<option value={REMOVE_PROJECT_VALUE}>- Remove Current Project</option>
8184
)}
8285
</select>
8386
<Popover

packages/sdd-webapp/src/client/hooks/useSpecs.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { fetchJson } from "../lib/api";
44
import { getErrorMessage } from "../lib/error";
55
import { apiRoutes } from "../lib/routes";
66

7+
const DEFAULT_ERROR_MESSAGE = "Unknown error";
8+
79
export function useSpecs(
810
projectId: string | null,
911
options?: { includeArchived?: boolean },
@@ -34,7 +36,7 @@ export function useSpecs(
3436
);
3537
setFileTree(data);
3638
} catch (err) {
37-
setError(getErrorMessage(err, "Unknown error"));
39+
setError(getErrorMessage(err, DEFAULT_ERROR_MESSAGE));
3840
} finally {
3941
stopLoading();
4042
}
@@ -52,7 +54,7 @@ export function useSpecs(
5254
setSpecContent(data);
5355
setSelectedFile(path);
5456
} catch (err) {
55-
setError(getErrorMessage(err, "Unknown error"));
57+
setError(getErrorMessage(err, DEFAULT_ERROR_MESSAGE));
5658
} finally {
5759
stopLoading();
5860
}
@@ -72,7 +74,7 @@ export function useSpecs(
7274
);
7375
setStatus(data);
7476
} catch (err) {
75-
setError(getErrorMessage(err, "Unknown error"));
77+
setError(getErrorMessage(err, DEFAULT_ERROR_MESSAGE));
7678
} finally {
7779
stopLoading();
7880
}

0 commit comments

Comments
 (0)