diff --git a/common/src/app/common/files/builder.cljc b/common/src/app/common/files/builder.cljc index 5b312f7d3..b144db1c7 100644 --- a/common/src/app/common/files/builder.cljc +++ b/common/src/app/common/files/builder.cljc @@ -746,3 +746,7 @@ :page-id page-id :option :guides :value new-guides})))) + +(defn strip-image-extension [filename] + (let [image-extensions-re #"(\.png)|(\.jpg)|(\.jpeg)|(\.webp)|(\.gif)|(\.svg)$"] + (str/replace filename image-extensions-re ""))) diff --git a/common/test/common_tests/files_builder_test.cljc b/common/test/common_tests/files_builder_test.cljc new file mode 100644 index 000000000..d8a4d9dd6 --- /dev/null +++ b/common/test/common_tests/files_builder_test.cljc @@ -0,0 +1,26 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns common-tests.files-builder-test + (:require + [app.common.files.builder :as builder] + [clojure.test :as t])) + +(t/deftest test-strip-image-extension + (t/testing "removes extension from supported image files" + (t/is (= (builder/strip-image-extension "foo.png") "foo")) + (t/is (= (builder/strip-image-extension "foo.webp") "foo")) + (t/is (= (builder/strip-image-extension "foo.jpg") "foo")) + (t/is (= (builder/strip-image-extension "foo.jpeg") "foo")) + (t/is (= (builder/strip-image-extension "foo.svg") "foo")) + (t/is (= (builder/strip-image-extension "foo.gif") "foo"))) + + (t/testing "does not remove extension for unsupported files" + (t/is (= (builder/strip-image-extension "foo.txt") "foo.txt")) + (t/is (= (builder/strip-image-extension "foo.bmp") "foo.bmp"))) + + (t/testing "leaves filename intact when it has no extension" + (t/is (= (builder/strip-image-extension "README") "README")))) diff --git a/frontend/src/app/main/data/workspace/media.cljs b/frontend/src/app/main/data/workspace/media.cljs index e97f871d2..121d32be1 100644 --- a/frontend/src/app/main/data/workspace/media.cljs +++ b/frontend/src/app/main/data/workspace/media.cljs @@ -8,6 +8,7 @@ (:require [app.common.data.macros :as dm] [app.common.exceptions :as ex] + [app.common.files.builder :as fb] [app.common.logging :as log] [app.common.math :as mth] [app.common.pages.changes-builder :as pcb] @@ -134,7 +135,7 @@ (= (.-type blob) "image/svg+xml"))) (prepare-blob [blob] - (let [name (or name (if (dmm/file? blob) (.-name blob) "blob"))] + (let [name (or name (if (dmm/file? blob) (fb/strip-image-extension (.-name blob)) "blob"))] {:file-id file-id :name name :is-local local?