Forráskód Böngészése

enhance: backup notice when the graph hasn't been updated

since the last export.
Tienson Qin 9 hónapja
szülő
commit
f8029417a1

+ 20 - 12
src/main/frontend/components/export.cljs

@@ -1,24 +1,24 @@
 (ns frontend.components.export
-  (:require [cljs-time.core :as t]
-            ["/frontend/utils" :as utils]
+  (:require ["/frontend/utils" :as utils]
+            [cljs-time.core :as t]
             [frontend.config :as config]
             [frontend.context.i18n :refer [t]]
             [frontend.db :as db]
-            [logseq.db :as ldb]
-            [frontend.handler.export.text :as export-text]
+            [frontend.handler.export :as export]
             [frontend.handler.export.html :as export-html]
             [frontend.handler.export.opml :as export-opml]
-            [frontend.handler.export :as export]
+            [frontend.handler.export.text :as export-text]
+            [frontend.handler.notification :as notification]
+            [frontend.idb :as idb]
             [frontend.image :as image]
             [frontend.mobile.util :as mobile-util]
             [frontend.state :as state]
             [frontend.ui :as ui]
             [frontend.util :as util]
-            [rum.core :as rum]
+            [logseq.db :as ldb]
             [logseq.shui.ui :as shui]
             [promesa.core :as p]
-            [frontend.idb :as idb]
-            [frontend.handler.notification :as notification]))
+            [rum.core :as rum]))
 
 (rum/defcs auto-backup < rum/reactive
   {:init (fn [state]
@@ -62,10 +62,18 @@
        (shui/button
         {:variant :default
          :on-click (fn []
-                     (p/let [result (export/backup-db-graph repo)]
-                       (when result
-                         (notification/show! "Backup successful!" :success))
-                       (export/auto-db-backup! repo {:backup-now? false})))}
+                     (->
+                      (p/let [result (export/backup-db-graph repo)]
+                        (case result
+                          true
+                          (notification/show! "Backup successful!" :success)
+                          :graph-not-changed
+                          (notification/show! "Graph has not been updated since last export." :success)
+                          nil)
+                        (export/auto-db-backup! repo {:backup-now? false}))
+                      (p/catch (fn [error]
+                                 (println "Failed to backup.")
+                                 (js/console.error error)))))}
         "Backup now"))]))
 
 (rum/defc export

+ 13 - 10
src/main/frontend/handler/export.cljs

@@ -1,6 +1,8 @@
 (ns ^:no-doc frontend.handler.export
   (:require
+   ["/frontend/utils" :as utils]
    ["@capacitor/filesystem" :refer [Encoding Filesystem]]
+   [cljs-bean.core :as bean]
    [cljs.pprint :as pprint]
    [clojure.set :as s]
    [clojure.string :as string]
@@ -9,22 +11,20 @@
    [frontend.db :as db]
    [frontend.extensions.zip :as zip]
    [frontend.external.roam-export :as roam-export]
+   [frontend.handler.assets :as assets-handler]
+   [frontend.handler.export.common :as export-common-handler]
    [frontend.handler.notification :as notification]
+   [frontend.idb :as idb]
    [frontend.mobile.util :as mobile-util]
-   [logseq.publishing.html :as publish-html]
+   [frontend.persist-db :as persist-db]
    [frontend.state :as state]
    [frontend.util :as util]
    [goog.dom :as gdom]
    [lambdaisland.glogi :as log]
-   [promesa.core :as p]
-   [frontend.persist-db :as persist-db]
-   [cljs-bean.core :as bean]
-   [frontend.handler.export.common :as export-common-handler]
-   [frontend.handler.assets :as assets-handler]
-   [logseq.db.sqlite.common-db :as sqlite-common-db]
    [logseq.db :as ldb]
-   [frontend.idb :as idb]
-   ["/frontend/utils" :as utils])
+   [logseq.db.sqlite.common-db :as sqlite-common-db]
+   [logseq.publishing.html :as publish-html]
+   [promesa.core :as p])
   (:import
    [goog.string StringBuffer]))
 
@@ -265,7 +265,10 @@
                    file-content (.text file)
                    data (persist-db/<export-db repo {:return-data? true})
                    decoded-content (.decode (js/TextDecoder.) data)]
-             (when (not= file-content decoded-content)
+             (if (= file-content decoded-content)
+               (do
+                 (println "Graph has not been updated since last export.")
+                 :graph-not-changed)
                (p/do!
                 (when (> (.-size file) 0)
                   (.move backup-handle backups-handle (str (util/time-ms) ".db.sqlite")))