Skip to content

Commit 6725c83

Browse files
committed
fix: export issues
1 parent 6ed39e7 commit 6725c83

File tree

7 files changed

+516
-37
lines changed

7 files changed

+516
-37
lines changed

src/main/frontend/db_worker.cljs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,12 +417,12 @@
417417
(get-all-pages
418418
[this repo]
419419
(when-let [conn (worker-state/get-datascript-conn repo)]
420-
(bean/->js (worker-export/get-all-pages repo @conn))))
420+
(pr-str (worker-export/get-all-pages repo @conn))))
421421

422422
(get-all-page->content
423423
[this repo]
424424
(when-let [conn (worker-state/get-datascript-conn repo)]
425-
(bean/->js (worker-export/get-all-page->content repo @conn))))
425+
(pr-str (worker-export/get-all-page->content repo @conn))))
426426

427427
;; RTC
428428
(rtc-start

src/main/frontend/extensions/zip.cljs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
(ns frontend.extensions.zip
22
(:require [clojure.string :as string]
3-
[frontend.config :as config]
43
["jszip" :as JSZip]
54
[promesa.core :as p]))
65

@@ -11,15 +10,13 @@
1110
(aset args "lastModified" last-modified)
1211
(js/File. blob-content file-name args)))
1312

14-
(defn make-zip [zip-filename file-name->content repo]
13+
(defn make-zip [zip-filename file-name->content _repo]
1514
(let [zip (JSZip.)
16-
zip-foldername (subs zip-filename (inc (string/last-index-of zip-filename "/")))
17-
src-filepath (string/replace repo config/local-db-prefix "")
18-
folder (.folder zip zip-foldername)]
15+
folder (.folder zip zip-filename)]
1916
(doseq [[file-name content] file-name->content]
20-
(.file folder (-> file-name
21-
(string/replace src-filepath "")
22-
(string/replace #"^/+" ""))
23-
content))
17+
(when-not (string/blank? content)
18+
(.file folder (-> file-name
19+
(string/replace #"^/+" ""))
20+
content)))
2421
(p/let [zip-blob (.generateAsync zip #js {:type "blob"})]
2522
(make-file zip-blob (str zip-filename ".zip") {:type "application/zip"}))))

src/main/frontend/handler/export.cljs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
(defn export-repo-as-zip!
5252
[repo]
53-
(p/let [files (export-common-handler/<get-file-contents repo)
53+
(p/let [files (export-common-handler/<get-file-contents repo "md")
5454
[owner repo-name] (util/get-git-owner-and-repo repo)
5555
repo-name (str owner "-" repo-name)
5656
files (map (fn [{:keys [path content]}] [path content]) files)]
@@ -102,16 +102,16 @@
102102
(p/let [pages (export-common-handler/<get-all-pages repo)]
103103
{:version 1
104104
:blocks
105-
(nested-select-keys pages
106-
[:block/id
105+
(nested-select-keys [:block/id
107106
:block/type
108107
:block/page-name
109108
:block/properties
110109
:block/format
111110
:block/children
112111
:block/content
113112
:block/created-at
114-
:block/updated-at])}))
113+
:block/updated-at]
114+
pages)}))
115115

116116
(defn- file-name [repo extension]
117117
(-> (string/replace repo config/local-db-prefix "")
@@ -121,23 +121,25 @@
121121

122122
(defn- <export-repo-as-edn-str [repo]
123123
(p/let [result (<build-blocks repo)]
124+
(prn :debug :result result)
124125
(let [sb (StringBuffer.)]
125126
(pprint/pprint result (StringBufferWriter. sb))
126127
(str sb))))
127128

128129
(defn export-repo-as-edn!
129130
[repo]
130-
(when-let [edn-str (<export-repo-as-edn-str repo)]
131-
(let [data-str (some->> edn-str
132-
js/encodeURIComponent
133-
(str "data:text/edn;charset=utf-8,"))
134-
filename (file-name repo :edn)]
135-
(if (mobile-util/native-platform?)
136-
(export-file-on-mobile edn-str filename)
137-
(when-let [anchor (gdom/getElement "download-as-edn-v2")]
138-
(.setAttribute anchor "href" data-str)
139-
(.setAttribute anchor "download" filename)
140-
(.click anchor))))))
131+
(p/let [edn-str (<export-repo-as-edn-str repo)]
132+
(when edn-str
133+
(let [data-str (some->> edn-str
134+
js/encodeURIComponent
135+
(str "data:text/edn;charset=utf-8,"))
136+
filename (file-name repo :edn)]
137+
(if (mobile-util/native-platform?)
138+
(export-file-on-mobile edn-str filename)
139+
(when-let [anchor (gdom/getElement "download-as-edn-v2")]
140+
(.setAttribute anchor "href" data-str)
141+
(.setAttribute anchor "download" filename)
142+
(.click anchor)))))))
141143

142144
(defn- nested-update-id
143145
[vec-tree]

src/main/frontend/handler/export/common.cljs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
[promesa.core :as p]
1717
[frontend.persist-db.browser :as db-browser]
1818
[cljs-bean.core :as bean]
19-
[frontend.worker.export :as worker-export]))
19+
[frontend.worker.export :as worker-export]
20+
[clojure.edn :as edn]))
2021

2122
;;; TODO: split frontend.handler.export.text related states
2223
(def ^:dynamic *state*
@@ -194,19 +195,19 @@
194195
[repo]
195196
(when-let [^object worker @db-browser/*worker]
196197
(p/let [result (.get-all-pages worker repo)]
197-
(bean/->clj result))))
198+
(edn/read-string result))))
198199

199200
(defn <get-all-page->content
200201
[repo]
201202
(when-let [^object worker @db-browser/*worker]
202203
(p/let [result (.get-all-page->content worker repo)]
203-
(bean/->clj result))))
204+
(edn/read-string result))))
204205

205206
(defn <get-file-contents
206-
[repo]
207+
[repo suffix]
207208
(p/let [page->content (<get-all-page->content repo)]
208209
(clojure.core/map (fn [[page-title content]]
209-
{:path (str page-title ".md")
210+
{:path (str page-title "."suffix)
210211
:content content
211212
:title page-title
212213
:format :markdown})

src/main/frontend/handler/export/opml.cljs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
[goog.dom :as gdom]
1616
[hiccups.runtime :as h]
1717
[frontend.format.mldoc :as mldoc]
18-
[promesa.core :as p]))
18+
[promesa.core :as p]
19+
[frontend.config :as config]))
1920

2021
;;; *opml-state*
2122
(def ^:private ^:dynamic
@@ -451,16 +452,20 @@
451452
[files options]
452453
(mapv
453454
(fn [{:keys [path content title format]}]
454-
(when title
455+
(when (and title (not (string/blank? content)))
455456
(util/profile (print-str :export-files-as-opml path)
456457
[path (export-helper content format options :title title)])))
457458
files))
458459

459460
(defn export-repo-as-opml!
460461
[repo]
461-
(p/let [files (common/<get-file-contents repo)]
462+
(p/let [files (common/<get-file-contents repo "opml")]
462463
(when (seq files)
463-
(let [files (export-files-as-opml files nil)
464+
(let [repo (-> repo
465+
(string/replace config/db-version-prefix "")
466+
(string/replace config/local-db-prefix ""))
467+
files (->> (export-files-as-opml files nil)
468+
(clojure.core/remove nil?))
464469
zip-file-name (str repo "_opml_" (quot (util/time-ms) 1000))]
465470
(p/let [zipfile (zip/make-zip zip-file-name files repo)]
466471
(when-let [anchor (gdom/getElement "export-as-opml")]

0 commit comments

Comments
 (0)