mirror of https://github.com/logseq/logseq
Fix #23
parent
42a905c14d
commit
4e363519c1
|
@ -57,16 +57,13 @@
|
||||||
(files-list file-active?)]))
|
(files-list file-active?)]))
|
||||||
|
|
||||||
(rum/defc main-content < rum/reactive
|
(rum/defc main-content < rum/reactive
|
||||||
{:will-mount (fn [state]
|
|
||||||
(handler/set-latest-journals!)
|
|
||||||
state)}
|
|
||||||
[]
|
[]
|
||||||
(let [{:repo/keys [cloning? loading-files?]
|
(let [{:repo/keys [cloning? loading-files? importing-to-db?]
|
||||||
:keys [latest-journals]} (rum/react state/state)]
|
:keys [latest-journals]} (rum/react state/state)]
|
||||||
[:div.max-w-7xl.mx-auto.px-4.sm:px-6.md:px-8
|
[:div.max-w-7xl.mx-auto.px-4.sm:px-6.md:px-8
|
||||||
(cond
|
(cond
|
||||||
;; importing-to-db?
|
importing-to-db?
|
||||||
;; [:div "Parsing files ..."]
|
[:div "Parsing files ..."]
|
||||||
|
|
||||||
(seq latest-journals)
|
(seq latest-journals)
|
||||||
(journal/journals latest-journals)
|
(journal/journals latest-journals)
|
||||||
|
|
|
@ -72,6 +72,7 @@
|
||||||
|
|
||||||
(defn load-files
|
(defn load-files
|
||||||
[repo-url]
|
[repo-url]
|
||||||
|
(set-state-kv! :repo/cloning? false)
|
||||||
(set-state-kv! :repo/loading-files? true)
|
(set-state-kv! :repo/loading-files? true)
|
||||||
(util/p-handle (git/list-files repo-url)
|
(util/p-handle (git/list-files repo-url)
|
||||||
(fn [files]
|
(fn [files]
|
||||||
|
@ -84,11 +85,9 @@
|
||||||
(when patterns-content
|
(when patterns-content
|
||||||
(let [patterns (string/split patterns-content #"\n")
|
(let [patterns (string/split patterns-content #"\n")
|
||||||
files (remove (fn [path] (hidden? path patterns)) files)]
|
files (remove (fn [path] (hidden? path patterns)) files)]
|
||||||
(set-state-kv! :repo/loading-files? false)
|
|
||||||
(db/transact-files! repo-url files)))))
|
(db/transact-files! repo-url files)))))
|
||||||
(p/promise
|
(p/promise
|
||||||
(do
|
(do
|
||||||
(set-state-kv! :repo/loading-files? false)
|
|
||||||
(db/transact-files! repo-url files)))))))))
|
(db/transact-files! repo-url files)))))))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,36 +109,35 @@
|
||||||
(defn- set-git-error!
|
(defn- set-git-error!
|
||||||
[value]
|
[value]
|
||||||
(set-state-kv! :git/error value)
|
(set-state-kv! :git/error value)
|
||||||
(storage/set :git/error value))
|
(storage/set :git/error (pr-str value)))
|
||||||
|
|
||||||
|
(defn set-latest-journals!
|
||||||
|
[]
|
||||||
|
(set-state-kv! :latest-journals (db/get-latest-journals {})))
|
||||||
|
|
||||||
;; TODO: Maybe replace with fetch?
|
|
||||||
;; TODO: callback hell
|
|
||||||
(defn pull
|
(defn pull
|
||||||
[repo-url token]
|
[repo-url token]
|
||||||
(when (and (nil? (:git/error @state/state))
|
(when (and (nil? (:git/error @state/state))
|
||||||
(nil? (:git/status @state/state)))
|
(nil? (:git/status @state/state)))
|
||||||
(let [remote-changed? (atom false)
|
(let [remote-changed? (atom false)
|
||||||
latest-commit (:git/latest-commit @state/state)]
|
latest-commit (:git/latest-commit @state/state)]
|
||||||
(->
|
(p/let [result (git/fetch repo-url token)
|
||||||
(util/p-handle
|
{:keys [fetchHead]} (bean/->clj result)
|
||||||
(git/fetch repo-url token)
|
merge-result (do
|
||||||
(fn [result]
|
|
||||||
(let [{:keys [fetchHead]} (bean/->clj result)]
|
|
||||||
(when (or
|
(when (or
|
||||||
(nil? latest-commit)
|
(nil? latest-commit)
|
||||||
(and latest-commit (not= fetchHead latest-commit)))
|
(and latest-commit (not= fetchHead latest-commit)))
|
||||||
(reset! remote-changed? true))
|
(reset! remote-changed? true))
|
||||||
(set-latest-commit! fetchHead)
|
(set-latest-commit! fetchHead)
|
||||||
(git/merge repo-url))))
|
(git/merge repo-url))
|
||||||
(util/p-handle
|
_ (prn {:merge-result merge-result})
|
||||||
(fn [merge-result]
|
files (when @remote-changed?
|
||||||
(prn {:merge-result merge-result
|
(load-files repo-url))
|
||||||
:remote-changed? @remote-changed?})
|
load-repo (when @remote-changed?
|
||||||
(when @remote-changed?
|
(load-repo-to-db! repo-url))]
|
||||||
(-> (load-files repo-url)
|
(when (or @remote-changed?
|
||||||
(p/then
|
(empty? (:latest-journals @state/state)))
|
||||||
(fn []
|
(set-latest-journals!))))))
|
||||||
(load-repo-to-db! repo-url)))))))))))
|
|
||||||
|
|
||||||
(defn periodically-pull
|
(defn periodically-pull
|
||||||
[repo-url]
|
[repo-url]
|
||||||
|
@ -189,13 +187,14 @@
|
||||||
(set-state-kv! :repo/cloning? true)
|
(set-state-kv! :repo/cloning? true)
|
||||||
(git/clone repo token))
|
(git/clone repo token))
|
||||||
(fn []
|
(fn []
|
||||||
(set-state-kv! :repo/cloning? false)
|
|
||||||
(db/mark-repo-as-cloned repo)
|
(db/mark-repo-as-cloned repo)
|
||||||
(db/set-current-repo! repo)
|
(db/set-current-repo! repo)
|
||||||
;; load contents
|
;; load contents
|
||||||
(load-files repo))
|
(load-files repo))
|
||||||
(fn [e]
|
(fn [e]
|
||||||
(set-state-kv! :repo/cloning? false)
|
(set-state-kv! :repo/cloning? false)
|
||||||
|
(set-git-status! :clone-failed)
|
||||||
|
(set-git-error! e)
|
||||||
(prn "Clone failed, reason: " e)))))
|
(prn "Clone failed, reason: " e)))))
|
||||||
|
|
||||||
(defn new-notification
|
(defn new-notification
|
||||||
|
@ -329,6 +328,7 @@
|
||||||
|
|
||||||
(defn load-repo-to-db!
|
(defn load-repo-to-db!
|
||||||
[repo-url]
|
[repo-url]
|
||||||
|
(set-state-kv! :repo/loading-files? false)
|
||||||
(set-state-kv! :repo/importing-to-db? true)
|
(set-state-kv! :repo/importing-to-db? true)
|
||||||
(load-all-contents!
|
(load-all-contents!
|
||||||
repo-url
|
repo-url
|
||||||
|
@ -379,9 +379,6 @@
|
||||||
(apply str))))
|
(apply str))))
|
||||||
|
|
||||||
;; journals
|
;; journals
|
||||||
(defn set-latest-journals!
|
|
||||||
[]
|
|
||||||
(set-state-kv! :latest-journals (db/get-latest-journals {})))
|
|
||||||
|
|
||||||
(defn create-month-journal-if-not-exists
|
(defn create-month-journal-if-not-exists
|
||||||
[repo-url]
|
[repo-url]
|
||||||
|
@ -400,18 +397,10 @@
|
||||||
(fn [file-exists?]
|
(fn [file-exists?]
|
||||||
(when-not file-exists?
|
(when-not file-exists?
|
||||||
(prn "create a month journal")
|
(prn "create a month journal")
|
||||||
(git-add-commit repo-url path "create a month journal" default-content)
|
(git-add-commit repo-url path "create a month journal" default-content)))
|
||||||
(set-latest-journals!)))
|
|
||||||
(fn [error]
|
(fn [error]
|
||||||
(prn error))))))
|
(prn error))))))
|
||||||
|
|
||||||
(defn clone-and-pull
|
|
||||||
[repo]
|
|
||||||
(p/then (clone repo)
|
|
||||||
(fn []
|
|
||||||
(periodically-pull repo)
|
|
||||||
(create-month-journal-if-not-exists repo))))
|
|
||||||
|
|
||||||
(defn set-route-match!
|
(defn set-route-match!
|
||||||
[route]
|
[route]
|
||||||
(swap! state/state assoc :route-match route))
|
(swap! state/state assoc :route-match route))
|
||||||
|
@ -454,6 +443,13 @@
|
||||||
(periodically-pull repo-url)
|
(periodically-pull repo-url)
|
||||||
(periodically-push-tasks repo-url))
|
(periodically-push-tasks repo-url))
|
||||||
|
|
||||||
|
(defn clone-and-pull
|
||||||
|
[repo]
|
||||||
|
(p/then (clone repo)
|
||||||
|
(fn []
|
||||||
|
(periodically-pull-and-push repo)
|
||||||
|
(create-month-journal-if-not-exists repo))))
|
||||||
|
|
||||||
(defn edit-journal!
|
(defn edit-journal!
|
||||||
[content journal]
|
[content journal]
|
||||||
(swap! state/state assoc
|
(swap! state/state assoc
|
||||||
|
|
Loading…
Reference in New Issue