diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/DownloadFile.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/DownloadFile.svelte
index 741b21a768..702f0cc911 100644
--- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/DownloadFile.svelte
+++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/DownloadFile.svelte
@@ -1,7 +1,9 @@
- (parameters.value = e.detail)}
+
diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js
index a4471ac4aa..e00c6c6640 100644
--- a/packages/client/src/utils/buttonActions.js
+++ b/packages/client/src/utils/buttonActions.js
@@ -400,21 +400,23 @@ const closeSidePanelHandler = () => {
sidePanelStore.actions.close()
}
-const downloadFileHandler = (action, context) => {
- download(action.parameters.value, `file.jpg`)
- // const x = processStringSync(action.parameters.value, context)
- // console.warn(x)
+const downloadFileHandler = async (action, context) => {
+ const { url, file_name } = action.parameters.value
- // // Built total context for this action
- // const totalContext = {
- // ...context,
- // state: get(stateStore),
- // actions: buttonContext,
- // }
+ const response = await fetch(url)
- // action = enrichDataBindings(action, totalContext)
+ if (!response.ok) {
+ throw "TODO"
+ }
- // console.error(action)
+ const objectUrl = URL.createObjectURL(await response.blob())
+
+ const link = document.createElement("a")
+ link.href = objectUrl
+ link.download = file_name
+ link.click()
+
+ URL.revokeObjectURL(objectUrl)
}
const handlerMap = {