From 8bd94b82bf48d7605bd6aa79f9fbdec73b7a9a2e Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Fri, 30 Aug 2024 03:03:24 +0000 Subject: [PATCH] upload: Name the link based on the uploaded filename. We previously parsed the filename as stored on disk, which is rather sanitized. Use as close to the original filename as possible. --- web/src/upload.ts | 11 +++++++---- web/tests/upload.test.js | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/web/src/upload.ts b/web/src/upload.ts index 8dec24540e..c91f2f3507 100644 --- a/web/src/upload.ts +++ b/web/src/upload.ts @@ -372,10 +372,13 @@ export function setup_upload(config: Config): Uppy { uppy.on("upload-success", (file, response) => { assert(file !== undefined); - const {url} = z.object({url: z.string()}).parse(response.body); - const split_url = url.split("/"); - const filename = split_url.at(-1); - const syntax_to_insert = "[" + filename + "](" + url + ")"; + const {url, filename} = z + .object({url: z.string(), filename: z.string()}) + .parse(response.body); + // Our markdown does not have escape characters, so we cannot link any text with brackets; + // strip them out, if present. + const filtered_filename = filename.replaceAll("[", "").replaceAll("]", ""); + const syntax_to_insert = "[" + filtered_filename + "](" + url + ")"; const $text_area = config.textarea(); const replacement_successful = compose_ui.replace_syntax( get_translated_status(file), diff --git a/web/tests/upload.test.js b/web/tests/upload.test.js index 6d6f02c91e..4d9ea5ee32 100644 --- a/web/tests/upload.test.js +++ b/web/tests/upload.test.js @@ -501,6 +501,7 @@ test("uppy_events", ({override_rewire, mock_template}) => { let response = { body: { url: "/user_uploads/4/cb/rue1c-MlMUjDAUdkRrEM4BTJ/copenhagen.png", + filename: "copenhagen.png", }, };