From 6ed39e787132f54a005b0c498500b992d8008796 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sun, 21 Jan 2024 18:46:18 +0800 Subject: [PATCH] fix: export zip file --- src/main/frontend/handler/export.cljs | 26 ++----- src/main/frontend/handler/export/common.cljs | 72 +++++++++++--------- src/main/frontend/handler/export/opml.cljs | 4 +- src/main/frontend/handler/export/text.cljs | 2 +- 4 files changed, 47 insertions(+), 57 deletions(-) diff --git a/src/main/frontend/handler/export.cljs b/src/main/frontend/handler/export.cljs index df7ecbd283..7de3fa2114 100644 --- a/src/main/frontend/handler/export.cljs +++ b/src/main/frontend/handler/export.cljs @@ -18,8 +18,8 @@ [lambdaisland.glogi :as log] [promesa.core :as p] [frontend.persist-db :as persist-db] - [frontend.persist-db.browser :as db-browser] - [cljs-bean.core :as bean]) + [cljs-bean.core :as bean] + [frontend.handler.export.common :as export-common-handler]) (:import [goog.string StringBuffer])) @@ -48,21 +48,12 @@ (.setAttribute anchor "download" "index.html") (.click anchor)))))) -(defn- content - [repo] - (when-let [^object worker @db-browser/*worker] - (.get-all-page->content worker repo))) - (defn export-repo-as-zip! [repo] - (p/let [page->content (content repo) + (p/let [files (export-common-handler/content)] + files (map (fn [{:keys [path content]}] [path content]) files)] (when (seq files) (p/let [zipfile (zip/make-zip repo-name files repo)] (when-let [anchor (gdom/getElement "download")] @@ -106,14 +97,9 @@ x)) vec-tree)) -(defn- edn content format)))))) -(defn get-page-content +(defn content worker repo page-name nil + (pr-str {:export-bullet-indentation (state/get-export-bullet-indentation)}))))) + +(defn get-page-content + [page-name] + (let [repo (state/get-current-repo) + db (db/get-db repo)] + (worker-export/block->content repo db page-name + nil + {:export-bullet-indentation (state/get-export-bullet-indentation)}))) (defn- page-name->ast [page-name] (when-let [content (get-page-content page-name)] - (let [format :markdown] - (removev Properties-block-ast? - (mapv remove-block-ast-pos - (mldoc/->edn content format)))))) + (when content + (let [format :markdown] + (removev Properties-block-ast? + (mapv remove-block-ast-pos + (mldoc/->edn content format))))))) (defn- update-level-in-block-ast-coll [block-ast-coll origin-level] @@ -180,33 +190,27 @@ ast-content))) inline-coll))) -(defn- clj result)))) -(defn- content [repo] - (p/let [result (content worker repo)] + (bean/->clj result)))) -(defn > - md-files - (mapv (fn [[page-title path content]] - {:path path - :content content - :title page-title - :format (common-util/get-format path)}))))) + (p/let [page->content (content repo)] + (clojure.core/map (fn [[page-title content]] + {:path (str page-title ".md") + :content content + :title page-title + :format :markdown}) + page->content))) ;;; utils (ends) diff --git a/src/main/frontend/handler/export/opml.cljs b/src/main/frontend/handler/export/opml.cljs index 56629ddbf2..01743664a7 100644 --- a/src/main/frontend/handler/export/opml.cljs +++ b/src/main/frontend/handler/export/opml.cljs @@ -446,7 +446,7 @@ format (or (:block/format first-block) (state/get-preferred-format))] (export-helper content format options :title title)))) -(defn export-files-as-opml +(defn- export-files-as-opml "options see also `export-blocks-as-opml`" [files options] (mapv @@ -458,7 +458,7 @@ (defn export-repo-as-opml! [repo] - (p/let [files (common/