processing / processing/p5.js-web-editor
saveProject throws an error when a network request fails
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.7k
- Forks
- 1.7k
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 8
Description
p5.js version
2.3.2
What is your operating system?
Linux
Web browser and version
firefox 153.0.1
Actual Behavior
When saving a project, if the request fails because of a network error, saveProject() throws a TypeError instead of handling the save failure normally.
the error is:
Cannot read properties of undefined (reading 'status')
this happens because the error handler assumes error.response always exists, but for network errors there is no response.
Expected Behavior
A network error while saving should be handled as a normal save failure without throwing another error.
The user should get the usual save failure handling instead of an unhandled/rejected promise.
Steps to reproduce
Steps:
- open an existing saved project and make some changes.
- disconnect the network or otherwise make the api request fail without returning an http response.
- try to save the project.
- saveProject() rejects with:
Cannot read properties of undefined (reading 'status')
Snippet:
apiClient
.put(`/projects/${state.project.id}`, formParams)
.catch((error) => {
const { response } = error;
if (response.status === 403) {
// ...
}
});
for a network error, error.response is undefined, so accessing response.status throws.
a possible fix would be to check whether response exists before accessing response.status, and handle network errors as a normal save failure.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the saveProject() entry point and the apiClient.put() catch handler shown in the issue. Reproduce the failure by making the request fail without an HTTP response, then verify that the existing save-failure handling runs without an unhandled rejection or secondary TypeError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- api, frontend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100