Explorar el Código

fix(exporter): flatten zip files

charlie hace 4 años
padre
commit
77af7036e5
Se han modificado 2 ficheros con 14 adiciones y 7 borrados
  1. 11 4
      src/main/frontend/extensions/zip.cljs
  2. 3 3
      src/main/frontend/handler/export.cljs

+ 11 - 4
src/main/frontend/extensions/zip.cljs

@@ -2,6 +2,8 @@
   (:require ["jszip" :as JSZip]
   (:require ["jszip" :as JSZip]
             ["/frontend/utils" :as utils]
             ["/frontend/utils" :as utils]
             [promesa.core :as p]
             [promesa.core :as p]
+            [clojure.string :as string]
+            [frontend.config :as config]
             [medley.core :as medley]))
             [medley.core :as medley]))
 
 
 (defn make-file [content file-name args]
 (defn make-file [content file-name args]
@@ -11,10 +13,15 @@
     (aset args "lastModified" last-modified)
     (aset args "lastModified" last-modified)
     (js/File. blob-content file-name args)))
     (js/File. blob-content file-name args)))
 
 
-(defn make-zip [repo file-name->content]
+(defn make-zip [zip-filename file-name->content repo]
   (let [zip (JSZip.)
   (let [zip (JSZip.)
-        folder (.folder zip repo)]
+        zip-foldername (subs zip-filename (inc (string/last-index-of zip-filename "/")))
+        src-filepath (string/replace repo config/local-db-prefix "")
+        folder (.folder zip zip-foldername)]
     (doseq [[file-name content] file-name->content]
     (doseq [[file-name content] file-name->content]
-      (.file folder file-name content))
+      (.file folder (-> file-name
+                        (string/replace src-filepath "")
+                        (string/replace #"^/+" ""))
+             content))
     (p/let [zip-blob (.generateAsync zip #js {:type "blob"})]
     (p/let [zip-blob (.generateAsync zip #js {:type "blob"})]
-      (make-file zip-blob (str repo ".zip") {:type "application/zip"}))))
+      (make-file zip-blob (str zip-filename ".zip") {:type "application/zip"}))))

+ 3 - 3
src/main/frontend/handler/export.cljs

@@ -150,7 +150,7 @@
         [owner repo-name] (util/get-git-owner-and-repo repo)
         [owner repo-name] (util/get-git-owner-and-repo repo)
         repo-name (str owner "-" repo-name)]
         repo-name (str owner "-" repo-name)]
     (when (seq files)
     (when (seq files)
-      (p/let [zipfile (zip/make-zip repo-name files)]
+      (p/let [zipfile (zip/make-zip repo-name files repo)]
         (when-let [anchor (gdom/getElement "download-as-zip")]
         (when-let [anchor (gdom/getElement "download-as-zip")]
           (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
           (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
           (.setAttribute anchor "download" (.-name zipfile))
           (.setAttribute anchor "download" (.-name zipfile))
@@ -441,7 +441,7 @@
             files
             files
             (export-files-as-markdown repo files heading-to-list?)
             (export-files-as-markdown repo files heading-to-list?)
             zip-file-name (str repo "_markdown_" (quot (util/time-ms) 1000))]
             zip-file-name (str repo "_markdown_" (quot (util/time-ms) 1000))]
-        (p/let [zipfile (zip/make-zip zip-file-name files)]
+        (p/let [zipfile (zip/make-zip zip-file-name files repo)]
           (when-let [anchor (gdom/getElement "export-as-markdown")]
           (when-let [anchor (gdom/getElement "export-as-markdown")]
             (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
             (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
             (.setAttribute anchor "download" (.-name zipfile))
             (.setAttribute anchor "download" (.-name zipfile))
@@ -489,7 +489,7 @@
   (when repo
   (when repo
     (when-let [files (get-md-file-contents repo)]
     (when-let [files (get-md-file-contents repo)]
       (let [zip-file-name (str repo "_markdown_" (quot (util/time-ms) 1000))]
       (let [zip-file-name (str repo "_markdown_" (quot (util/time-ms) 1000))]
-        (p/let [zipfile (zip/make-zip zip-file-name files)]
+        (p/let [zipfile (zip/make-zip zip-file-name files repo)]
           (when-let [anchor (gdom/getElement "convert-markdown-to-unordered-list-or-heading")]
           (when-let [anchor (gdom/getElement "convert-markdown-to-unordered-list-or-heading")]
             (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
             (.setAttribute anchor "href" (js/window.URL.createObjectURL zipfile))
             (.setAttribute anchor "download" (.-name zipfile))
             (.setAttribute anchor "download" (.-name zipfile))