fix: sync allows to pick a non-empty folder to sync with remote

This commit is contained in:
Tienson Qin
2022-09-06 17:29:36 +08:00
committed by Andelf
parent d822f5928a
commit 34d3ffe122

View File

@@ -340,39 +340,37 @@
[:div.-mt-1
(ui/button
(str "Open a local directory")
:class "w-full rounded-t-none py-4"
:on-click #(-> (page-handler/ls-dir-files!
(fn [{:keys [url]}]
(file-sync-handler/init-remote-graph url)
;; TODO: wait for switch done
(js/setTimeout (fn [] (repo-handler/refresh-repos!)) 200))
(str "Open a local directory")
:class "w-full rounded-t-none py-4"
:on-click #(page-handler/ls-dir-files!
(fn [{:keys [url]}]
(file-sync-handler/init-remote-graph url)
;; TODO: wait for switch done
(js/setTimeout (fn [] (repo-handler/refresh-repos!)) 200))
{:empty-dir?-or-pred
(fn [ret]
(let [empty-dir? (nil? (second ret))]
(if-let [root (first ret)]
{:empty-dir?-or-pred
(fn [ret]
(let [empty-dir? (nil? (second ret))]
(if-let [root (first ret)]
;; verify directory
(-> (if empty-dir?
(p/resolved nil)
(if (util/electron?)
(ipc/ipc :readGraphTxIdInfo root)
(fs-util/read-graph-txid-info root)))
;; verify directory
(-> (if empty-dir?
(p/resolved nil)
(if (util/electron?)
(ipc/ipc :readGraphTxIdInfo root)
(fs-util/read-graph-txid-info root)))
(p/then (fn [^js info]
(when (and (not empty-dir?)
(or (nil? info)
(nil? (second info))
(not= (second info) (:GraphUUID graph))))
(throw (js/Error. "AssertDirectoryError"))))))
(p/then (fn [^js info]
(when (and (not empty-dir?)
(or (nil? info)
(nil? (second info))
(not= (second info) (:GraphUUID graph))))
(if (js/confirm "This directory is not empty, are you sure to sync the remote graph with it? Make sure to back up the directory first.")
(p/resolved nil)
(throw (js/Error. nil)))))))
;; cancel pick a directory
(throw (js/Error. nil)))))})
(p/catch (fn [^js e]
(when (= "AssertDirectoryError" (.-message e))
(notifications/show! "Please select an empty directory or an existing remote graph!" :error))))))
;; cancel pick a directory
(throw (js/Error. nil)))))}))
[:p.text-xs.opacity-50.px-1 (ui/icon "alert-circle") " An empty directory or an existing remote graph!"]]])
(defn pick-dest-to-sync-panel [graph]