fix: Properly handle errors in Upload Api (related to StorageError) #216
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
Fix the error handling of
upload
,update
anduploadToSignedUrl
APIs so that they properly returnStorageError
instead of API's error schema.What is the current behavior?
Multiple issues and PRs have been discussing this error for over a year. #214 #165
There are a bunch of helper functions at
lib/fetch.ts
that catch errors returned by the server and constructStorageError
instance. Nearly all requests are using these helpers, except foruploadOrUpdate
anduploadToSignedUrl
inStorageFileApi
, making their return types inconsistent:Typescript declarations say the error returns are like:
However, without the helper functions, they actually return the error schema:
What is the new behavior?
This fix replaces raw fetch for
uploadOrUpdate
anduploadToSignedUrl
withpost
andput
helper functions so that their returns match the type declarations.Additional context
It appears upload APIs are not using helpers because
_getRequestParams
will force body to be json type, which is an easy fix.But if you think this part should not be touched, an alternative solution could be just patch the typings.