Improve error handling when uploading files to S3

This commit is contained in:
Andrew Kingston 2022-01-14 08:39:24 +00:00
parent 375d03a2d6
commit 73f2c9bd35
3 changed files with 14 additions and 3 deletions

View File

@ -1,4 +1,5 @@
import API from "./api"
import { notificationStore } from "../stores/index.js"
/**
* Uploads an attachment to the server.
@ -22,6 +23,9 @@ export const getSignedDatasourceURL = async (datasourceId, bucket, key) => {
url: `/api/attachments/${datasourceId}/url`,
body: { bucket, key },
})
if (res.error) {
throw "Could not generate signed upload URL"
}
return res?.signedUrl
}
@ -30,10 +34,13 @@ export const getSignedDatasourceURL = async (datasourceId, bucket, key) => {
*/
export const externalUpload = async (datasourceId, bucket, key, data) => {
const signedUrl = await getSignedDatasourceURL(datasourceId, bucket, key)
await API.put({
const res = await API.put({
url: signedUrl,
body: data,
json: false,
external: true,
})
if (res.error) {
throw "Could not upload file to signed URL"
}
}

View File

@ -70,7 +70,12 @@
const upload = async () => {
loading = true
await API.externalUpload(datasourceId, bucket, key, data)
try {
await API.externalUpload(datasourceId, bucket, key, data)
notificationStore.actions.success("File uploaded successfully")
} catch (error) {
notificationStore.actions.error(`Error uploading file: ${error}`)
}
loading = false
}

View File

@ -165,7 +165,6 @@ const s3UploadHandler = async action => {
return
}
await uploadStore.actions.processFileUpload(componentId)
notificationStore.actions.success("File uploaded successfully")
}
const handlerMap = {