feat: Display detailed, expandable connection error in Comments component

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2025-11-21 22:51:14 +00:00
parent 8c201d5c2e
commit b2ec85cfa5

View File

@@ -16,7 +16,7 @@ function Comments({ cache }) {
if (id in cache) console.log('cache hit'); if (id in cache) console.log('cache hit');
const [story, setStory] = useState(cache[id] || false); const [story, setStory] = useState(cache[id] || false);
const [error, setError] = useState(false); const [error, setError] = useState('');
const [collapsed, setCollapsed] = useState([]); const [collapsed, setCollapsed] = useState([]);
const [expanded, setExpanded] = useState([]); const [expanded, setExpanded] = useState([]);
@@ -31,7 +31,12 @@ function Comments({ cache }) {
); );
fetch('/api/' + id) fetch('/api/' + id)
.then(res => res.json()) .then(res => {
if (!res.ok) {
throw new Error(`Server responded with ${res.status} ${res.statusText}`);
}
return res.json();
})
.then( .then(
(result) => { (result) => {
setStory(result.story); setStory(result.story);
@@ -47,7 +52,8 @@ function Comments({ cache }) {
} }
}, },
(error) => { (error) => {
setError(true); const errorMessage = `Failed to fetch comments (ID: ${id}). Your connection may be down or the server might be experiencing issues. ${error.toString()}.`;
setError(errorMessage);
} }
); );
}, [id]); }, [id]);
@@ -97,7 +103,13 @@ function Comments({ cache }) {
return ( return (
<div className='container'> <div className='container'>
{error && <p>Connection error?</p>} {error &&
<details style={{marginBottom: '1rem'}}>
<summary>Connection error? Click to expand.</summary>
<p>{error}</p>
{story && <p>Loaded comments from cache.</p>}
</details>
}
{story ? {story ?
<div className='article'> <div className='article'>
<Helmet> <Helmet>