Skip to content

Commit

Permalink
Refactor error message state variable to support dynamic error messag…
Browse files Browse the repository at this point in the history
…es and move failure code to prevent bad data
  • Loading branch information
campb303 committed Jul 14, 2021
1 parent 99e8086 commit 861aea2
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/components/AppView/AppView.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export default function AppView({ setDarkMode }) {
const [queueSelectorOpen, setQueueSelectorOpen] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(false)
const [response, setResponse] = useState({ status: '', message: '' })
const [errorResponse, setErrorResponse] = useState({ code: "", description: "", message: "" })

const access_token = useToken();

Expand Down Expand Up @@ -59,15 +59,22 @@ export default function AppView({ setDarkMode }) {
let requestOptions = { headers: myHeaders };

const apiResponse = await fetch(`${process.env.PUBLIC_URL}/api/data/${queuesToLoad}`, requestOptions);
const queueJson = await apiResponse.json();

if (apiResponse.ok) {
setQueues(queueJson);
setIsLoading(false)
} else {
setResponse({ status: apiResponse.status, message: apiResponse.statusText })
setError(true)
if (!apiResponse.ok) {
console.error(`Fetching queues failed. Got code ${apiResponse.status} (${apiResponse.statusText})`);
const errorMessageJSON = await apiResponse.json();
setErrorResponse({
code: apiResponse.status,
description: apiResponse.statusText,
message: errorMessageJSON.message ? errorMessageJSON.message : ""
})
setError(true);
return undefined;
}

const queueJson = await apiResponse.json();
setQueues(queueJson);
setIsLoading(false)
})();
}, [selectedQueues, access_token, queueSelectorOpen]);

Expand Down Expand Up @@ -128,10 +135,10 @@ export default function AppView({ setDarkMode }) {
<Box classes={{ root: classes.errorContainer }}>
<ErrorOutlineIcon classes={{ root: classes.errorIcon }} />
<Typography align="center" variant="h3">
{`MESSAGE`}
{`${errorResponse.message}`}
</Typography>
<Typography align="center" variant="h5">
{`Error Code: CODE`}
{`Error Code: ${errorResponse.code} (${errorResponse.description})`}
</Typography>
</Box>
);
Expand Down

0 comments on commit 861aea2

Please sign in to comment.