diff --git a/webclient/src/Article.js b/webclient/src/Article.js index 007acd6..34e8bd6 100644 --- a/webclient/src/Article.js +++ b/webclient/src/Article.js @@ -10,7 +10,7 @@ function Article({ cache }) { if (id in cache) console.log('cache hit'); const [story, setStory] = useState(cache[id] || false); - const [error, setError] = useState(false); + const [error, setError] = useState(''); const [pConv, setPConv] = useState([]); useEffect(() => { @@ -24,14 +24,20 @@ function Article({ cache }) { ); 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( (result) => { setStory(result.story); localForage.setItem(id, result.story); }, (error) => { - setError(true); + const errorMessage = `Failed to fetch article content (ID: ${id}). Your connection may be down or the server might be experiencing issues. ${error.toString()}.`; + setError(errorMessage); } ); }, [id]); @@ -51,7 +57,12 @@ function Article({ cache }) { return (
Connection error?
} + {error && +{error}
+