Skip to content

Commit 8dfb171

Browse files
CopilotoBusk
andcommitted
Improve error handling and accessibility in VersionSelector
Co-authored-by: oBusk <[email protected]>
1 parent 6840f18 commit 8dfb171

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

next-env.d.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/app/[...parts]/_page/DiffIntro/VersionSelector.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,28 @@ export default function VersionSelector({
2525
const router = useRouter();
2626
const [versions, setVersions] = useState<Version[]>([]);
2727
const [isLoading, setIsLoading] = useState(true);
28+
const [hasError, setHasError] = useState(false);
2829

2930
useEffect(() => {
3031
const fetchVersions = async () => {
3132
try {
3233
setIsLoading(true);
34+
setHasError(false);
3335
const response = await fetch(
3436
`/api/-/versions?package=${encodeURIComponent(currentSpec.name)}`,
3537
);
3638
if (response.ok) {
3739
const data: Version[] = await response.json();
3840
setVersions(data);
41+
} else {
42+
console.error(
43+
`Failed to fetch versions: ${response.status} ${response.statusText}`,
44+
);
45+
setHasError(true);
3946
}
4047
} catch (error) {
4148
console.error("Failed to fetch versions:", error);
49+
setHasError(true);
4250
} finally {
4351
setIsLoading(false);
4452
}
@@ -67,6 +75,15 @@ export default function VersionSelector({
6775
};
6876

6977
if (isLoading) {
78+
return (
79+
<span className={className} aria-busy="true" aria-live="polite">
80+
{currentSpec.version}
81+
</span>
82+
);
83+
}
84+
85+
if (hasError || versions.length === 0) {
86+
// Fallback to plain text if we can't fetch versions
7087
return <span className={className}>{currentSpec.version}</span>;
7188
}
7289

0 commit comments

Comments
 (0)