|
|
@@ -342,35 +342,37 @@
|
|
|
(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))
|
|
|
-
|
|
|
- {: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)))
|
|
|
-
|
|
|
- (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)))))}))
|
|
|
+ :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)]
|
|
|
+
|
|
|
+ ;; 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))))
|
|
|
+ (if (js/confirm "This directory is not empty, are you sure to sync the remote graph to 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]))))
|
|
|
[: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]
|