From 434e49bf59e4ddf7ec90893fa3fd53faee8c9cbb Mon Sep 17 00:00:00 2001 From: Alex Yong Date: Wed, 24 Apr 2024 19:23:44 -0400 Subject: [PATCH] fix: abort upload behavior to properly handle server-side deletion and frontend state reset (#3114) * Fixed an issue where aborting an upload would not delete the partial upload from the server. Also fixed an issue where the abortAll function wasn't resetting and reloading the frontend properly * Add server-side tus delete handler --------- Co-authored-by: Oleg Lobanov --- frontend/src/components/prompts/UploadFiles.vue | 6 +++--- http/http.go | 1 + http/resource.go | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/prompts/UploadFiles.vue b/frontend/src/components/prompts/UploadFiles.vue index d3a96bc5..88a0b607 100644 --- a/frontend/src/components/prompts/UploadFiles.vue +++ b/frontend/src/components/prompts/UploadFiles.vue @@ -74,7 +74,6 @@ export default { "getETA", ]), ...mapWritableState(useFileStore, ["reload"]), - ...mapActions(useUploadStore, ["reset"]), formattedETA() { if (!this.getETA || this.getETA === Infinity) { return "--:--:--"; @@ -92,6 +91,7 @@ export default { }, }, methods: { + ...mapActions(useUploadStore, ["reset"]), // Mapping reset action from upload store toggle: function () { this.open = !this.open; }, @@ -100,8 +100,8 @@ export default { abortAllUploads(); buttons.done("upload"); this.open = false; - this.reset(); - this.reload = true; + this.reset(); // Resetting the upload store state + this.reload = true; // Trigger reload in the file store } }, }, diff --git a/http/http.go b/http/http.go index f91ec426..620c43fd 100644 --- a/http/http.go +++ b/http/http.go @@ -69,6 +69,7 @@ func NewHandler( api.PathPrefix("/tus").Handler(monkey(tusPostHandler(), "/api/tus")).Methods("POST") api.PathPrefix("/tus").Handler(monkey(tusHeadHandler(), "/api/tus")).Methods("HEAD", "GET") api.PathPrefix("/tus").Handler(monkey(tusPatchHandler(), "/api/tus")).Methods("PATCH") + api.PathPrefix("/tus").Handler(monkey(resourceDeleteHandler(fileCache), "/api/tus")).Methods("DELETE") api.PathPrefix("/usage").Handler(monkey(diskUsage, "/api/usage")).Methods("GET") diff --git a/http/resource.go b/http/resource.go index 11fa2930..f03f17fb 100644 --- a/http/resource.go +++ b/http/resource.go @@ -87,7 +87,7 @@ func resourceDeleteHandler(fileCache FileCache) handleFunc { return errToStatus(err), err } - return http.StatusOK, nil + return http.StatusNoContent, nil }) }