Browse Source

Allow delete attachments from builder data section

pull/7243/head
Mel O'Hagan 4 years ago
parent
commit
1f66cf9a83
  1. 8
      packages/bbui/src/Form/Core/Dropzone.svelte
  2. 2
      packages/bbui/src/Form/Dropzone.svelte
  3. 9
      packages/builder/src/components/common/Dropzone.svelte
  4. 13
      packages/frontend-core/src/api/attachments.js
  5. 5
      packages/server/src/api/routes/static.ts

8
packages/bbui/src/Form/Core/Dropzone.svelte

@ -95,9 +95,11 @@
"change",
value.filter((x, idx) => idx !== selectedImageIdx)
)
await deleteAttachments(
value.filter((x, idx) => idx === selectedImageIdx).map(item => item.key)
)
if (deleteAttachments) {
await deleteAttachments(
value.filter((x, idx) => idx === selectedImageIdx).map(item => item.key)
)
}
selectedImageIdx = 0
}

2
packages/bbui/src/Form/Dropzone.svelte

@ -10,6 +10,7 @@
export let error = null
export let fileSizeLimit = undefined
export let processFiles = undefined
export let deleteAttachments = undefined
export let handleFileTooLarge = undefined
export let handleTooManyFiles = undefined
export let gallery = true
@ -30,6 +31,7 @@
{value}
{fileSizeLimit}
{processFiles}
{deleteAttachments}
{handleFileTooLarge}
{handleTooManyFiles}
{gallery}

9
packages/builder/src/components/common/Dropzone.svelte

@ -27,6 +27,14 @@
return []
}
}
async function deleteAttachments(fileList) {
try {
return await API.deleteBuilderAttachments(fileList)
} catch (error) {
return []
}
}
</script>
<Dropzone
@ -34,5 +42,6 @@
{label}
{...$$restProps}
{processFiles}
{deleteAttachments}
{handleFileTooLarge}
/>

13
packages/frontend-core/src/api/attachments.js

@ -75,5 +75,18 @@ export const buildAttachmentEndpoints = API => {
},
})
},
/**
* Deletes attachments from the builder bucket.
* @param keys the attachments to delete
*/
deleteBuilderAttachments: async keys => {
return await API.post({
url: `/api/attachments/delete`,
body: {
keys,
},
})
},
}
}

5
packages/server/src/api/routes/static.ts

@ -38,6 +38,11 @@ router
// TODO: for now this builder endpoint is not authorized/secured, will need to be
.get("/builder/:file*", controller.serveBuilder)
.post("/api/attachments/process", authorized(BUILDER), controller.uploadFile)
.post(
"/api/attachments/delete",
authorized(BUILDER),
controller.deleteObjects
)
.post("/api/beta/:feature", controller.toggleBetaUiFeature)
.post(
"/api/attachments/:tableId/upload",

Loading…
Cancel
Save