mirror of https://github.com/logseq/logseq
fix: setup.cljs
parent
0d6c65eec4
commit
045a03468b
|
@ -3,21 +3,15 @@
|
|||
[rum.core :as rum]
|
||||
[frontend.ui :as ui]
|
||||
[frontend.context.i18n :refer [t]]
|
||||
[frontend.components.svg :as svg]
|
||||
[frontend.components.widgets :as widgets]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.route :as route-handler]
|
||||
[frontend.handler.ui :as ui-handler]
|
||||
[frontend.util :as util]
|
||||
[frontend.handler.web.nfs :as nfs]
|
||||
[frontend.handler.file-based.nfs :as nfs]
|
||||
[frontend.mobile.util :as mobile-util]
|
||||
[frontend.mobile.graph-picker :as graph-picker]
|
||||
[frontend.handler.notification :as notification]
|
||||
[frontend.handler.external :as external-handler]
|
||||
[frontend.modules.shortcut.core :as shortcut]
|
||||
[frontend.handler.user :as user-handler]
|
||||
[clojure.string :as string]
|
||||
[goog.object :as gobj]))
|
||||
[clojure.string :as string]))
|
||||
|
||||
(def DEVICE (if (util/mobile?) (t :on-boarding/section-phone) (t :on-boarding/section-computer)))
|
||||
|
||||
|
@ -30,12 +24,10 @@
|
|||
|
||||
[:h1.text-xl
|
||||
(if picker?
|
||||
[:span.flex.items-center.gap-1
|
||||
[:strong (ui/icon "heart" {:size 30})] (t :on-boarding/main-title)]
|
||||
[:span.flex.items-center.gap-1
|
||||
[:strong (ui/icon "file-import" {:size 30})] (t :on-boarding/importing-main-title)])]
|
||||
[:span (t :on-boarding/main-title)]
|
||||
[:span (t :on-boarding/importing-main-title)])]
|
||||
|
||||
[:h2.opacity-60
|
||||
[:h2
|
||||
(if picker?
|
||||
(t :on-boarding/main-desc)
|
||||
(t :on-boarding/importing-main-desc))]
|
||||
|
@ -99,7 +91,10 @@
|
|||
[:small (t :on-boarding/section-btn-desc)]])]]]
|
||||
[:div.px-5
|
||||
(ui/admonition :warning
|
||||
(widgets/native-fs-api-alert))]))]
|
||||
(widgets/native-fs-api-alert))
|
||||
[:div.choose.flex.flex-col.items-center
|
||||
(ui/button "Open a DB-based Graph"
|
||||
:on-click #(state/pub-event! [:graph/new-db-graph]))]]))]
|
||||
[:section.b.flex.items-center.flex-col
|
||||
[:p.flex
|
||||
[:i.as-flex-center (ui/icon "zoom-question" {:style {:fontSize "22px"}})]
|
||||
|
@ -130,133 +125,3 @@
|
|||
[:span
|
||||
[:strong.uppercase title]
|
||||
[:small.opacity-50 label]]]))]]])))
|
||||
|
||||
(defonce *opml-imported-pages (atom nil))
|
||||
|
||||
(defn- finished-cb
|
||||
[]
|
||||
(route-handler/redirect-to-home!)
|
||||
(notification/show! "Import finished!" :success)
|
||||
(ui-handler/re-render-root!))
|
||||
|
||||
(defn- roam-import-handler
|
||||
[e]
|
||||
(let [file (first (array-seq (.-files (.-target e))))
|
||||
file-name (gobj/get file "name")]
|
||||
(if (string/ends-with? file-name ".json")
|
||||
(do
|
||||
(state/set-state! :graph/importing :roam-json)
|
||||
(let [reader (js/FileReader.)]
|
||||
(set! (.-onload reader)
|
||||
(fn [e]
|
||||
(let [text (.. e -target -result)]
|
||||
(external-handler/import-from-roam-json!
|
||||
text
|
||||
#(do
|
||||
(state/set-state! :graph/importing nil)
|
||||
(finished-cb))))))
|
||||
(.readAsText reader file)))
|
||||
(notification/show! "Please choose a JSON file."
|
||||
:error))))
|
||||
|
||||
(defn- lsq-import-handler
|
||||
[e]
|
||||
(let [file (first (array-seq (.-files (.-target e))))
|
||||
file-name (some-> (gobj/get file "name")
|
||||
(string/lower-case))
|
||||
edn? (string/ends-with? file-name ".edn")
|
||||
json? (string/ends-with? file-name ".json")]
|
||||
(if (or edn? json?)
|
||||
(do
|
||||
(state/set-state! :graph/importing :logseq)
|
||||
(let [reader (js/FileReader.)
|
||||
import-f (if edn?
|
||||
external-handler/import-from-edn!
|
||||
external-handler/import-from-json!)]
|
||||
(set! (.-onload reader)
|
||||
(fn [e]
|
||||
(let [text (.. e -target -result)]
|
||||
(import-f
|
||||
text
|
||||
#(do
|
||||
(state/set-state! :graph/importing nil)
|
||||
(finished-cb))))))
|
||||
(.readAsText reader file)))
|
||||
(notification/show! "Please choose an EDN or a JSON file."
|
||||
:error))))
|
||||
|
||||
(defn- opml-import-handler
|
||||
[e]
|
||||
(let [file (first (array-seq (.-files (.-target e))))
|
||||
file-name (gobj/get file "name")]
|
||||
(if (string/ends-with? file-name ".opml")
|
||||
(do
|
||||
(state/set-state! :graph/importing :opml)
|
||||
(let [reader (js/FileReader.)]
|
||||
(set! (.-onload reader)
|
||||
(fn [e]
|
||||
(let [text (.. e -target -result)]
|
||||
(external-handler/import-from-opml! text
|
||||
(fn [pages]
|
||||
(reset! *opml-imported-pages pages)
|
||||
(state/set-state! :graph/importing nil)
|
||||
(finished-cb))))))
|
||||
(.readAsText reader file)))
|
||||
(notification/show! "Please choose a OPML file."
|
||||
:error))))
|
||||
|
||||
(rum/defc importer < rum/reactive
|
||||
[{:keys [query-params]}]
|
||||
(if (state/sub :graph/importing)
|
||||
(let [{:keys [total current-idx current-page]} (state/sub :graph/importing-state)
|
||||
left-label [:div.flex.flex-row.font-bold
|
||||
(t :importing)
|
||||
[:div.hidden.md:flex.flex-row
|
||||
[:span.mr-1 ": "]
|
||||
[:div.text-ellipsis-wrapper {:style {:max-width 300}}
|
||||
current-page]]]
|
||||
width (js/Math.round (* (.toFixed (/ current-idx total) 2) 100))
|
||||
process (when (and total current-idx)
|
||||
(str current-idx "/" total))]
|
||||
(ui/progress-bar-with-label width left-label process))
|
||||
(setups-container
|
||||
:importer
|
||||
[:article.flex.flex-col.items-center.importer.py-16.px-8
|
||||
[:section.c.text-center
|
||||
[:h1 (t :on-boarding/importing-title)]
|
||||
[:h2 (t :on-boarding/importing-desc)]]
|
||||
[:section.d.md:flex
|
||||
[:label.action-input.flex.items-center.mx-2.my-2
|
||||
[:span.as-flex-center [:i (svg/roam-research 28)]]
|
||||
[:div.flex.flex-col
|
||||
[[:strong "RoamResearch"]
|
||||
[:small (t :on-boarding/importing-roam-desc)]]]
|
||||
[:input.absolute.hidden
|
||||
{:id "import-roam"
|
||||
:type "file"
|
||||
:on-change roam-import-handler}]]
|
||||
|
||||
[:label.action-input.flex.items-center.mx-2.my-2
|
||||
[:span.as-flex-center [:i (svg/logo 28)]]
|
||||
[:span.flex.flex-col
|
||||
[[:strong "EDN / JSON"]
|
||||
[:small (t :on-boarding/importing-lsq-desc)]]]
|
||||
[:input.absolute.hidden
|
||||
{:id "import-lsq"
|
||||
:type "file"
|
||||
:on-change lsq-import-handler}]]
|
||||
|
||||
[:label.action-input.flex.items-center.mx-2.my-2
|
||||
[:span.as-flex-center (ui/icon "sitemap" {:style {:fontSize "26px"}})]
|
||||
[:span.flex.flex-col
|
||||
[[:strong "OPML"]
|
||||
[:small (t :on-boarding/importing-opml-desc)]]]
|
||||
|
||||
[:input.absolute.hidden
|
||||
{:id "import-opml"
|
||||
:type "file"
|
||||
:on-change opml-import-handler}]]]
|
||||
|
||||
(when (= "picker" (:from query-params))
|
||||
[:section.e
|
||||
[:a.button {:on-click #(route-handler/redirect-to-home!)} "Skip"]])])))
|
||||
|
|
Loading…
Reference in New Issue