Browse Source

fix: address issues when merging master

Tienson Qin 5 years ago
parent
commit
88eda1a014

+ 21 - 24
src/main/frontend/db.cljs

@@ -1876,30 +1876,27 @@
              db-name (datascript-files-db repo)
              db-conn (d/create-conn db-schema/files-db-schema)]
          (swap! conns assoc db-name db-conn)
-         (->
-          (p/let [stored (-> (idb/get-item db-name)
-                             (p/then (fn [result]
-                                       result))
-                             (p/catch (fn [error]
-                                        nil)))
-                  _ (when stored
-                      (let [stored-db (string->db stored)
-                            attached-db (d/db-with stored-db [(me-tx stored-db me)])]
-                        (reset-conn! db-conn attached-db)))
-                  db-name (datascript-db repo)
-                  db-conn (d/create-conn db-schema/schema)
-                  _ (d/transact! db-conn [{:schema/version db-schema/version}])
-                  _ (swap! conns assoc db-name db-conn)
-                  stored (idb/get-item db-name)
-                  _ (if stored
-                      (let [stored-db (string->db stored)
-                            attached-db (d/db-with stored-db [(me-tx stored-db me)])]
-                        (reset-conn! db-conn attached-db)
-                        (when (not= (:schema stored-db) db-schema/schema) ;; check for code update
-                          (db-schema-changed-handler {:url repo})))
-                      (when logged?
-                        (d/transact! db-conn [(me-tx (d/db db-conn) me)])))
-                  _ (restore-config-handler repo)])))))))
+         (p/let [stored (-> (idb/get-item db-name)
+                            (p/then (fn [result]
+                                      result))
+                            (p/catch (fn [error]
+                                       nil)))
+                 _ (when stored
+                     (let [stored-db (string->db stored)
+                           attached-db (d/db-with stored-db [(me-tx stored-db me)])]
+                       (reset-conn! db-conn attached-db)))
+                 db-name (datascript-db repo)
+                 db-conn (d/create-conn db-schema/schema)
+                 _ (d/transact! db-conn [{:schema/version db-schema/version}])
+                 _ (swap! conns assoc db-name db-conn)
+                 stored (idb/get-item db-name)
+                 _ (if stored
+                     (let [stored-db (string->db stored)
+                           attached-db (d/db-with stored-db [(me-tx stored-db me)])]
+                       (reset-conn! db-conn attached-db))
+                     (when logged?
+                       (d/transact! db-conn [(me-tx (d/db db-conn) me)])))]
+           (restore-config-handler repo)))))))
 
 (defn- build-edges
   [edges]

+ 6 - 3
src/main/frontend/handler.cljs

@@ -19,7 +19,8 @@
             [frontend.ui :as ui]
             [goog.object :as gobj]
             [frontend.helper :as helper]
-            [frontend.idb :as idb]))
+            [frontend.idb :as idb]
+            [lambdaisland.glogi :as log]))
 
 (defn- watch-for-date!
   []
@@ -56,7 +57,7 @@
 
 (defn clear-stores-and-refresh!
   []
-  (p/let [_ (db/clear-local-storage-and-idb!)]
+  (p/let [_ (idb/clear-local-storage-and-idb!)]
     (let [{:keys [me logged? repos]} (get-me-and-repos)]
       (js/window.location.reload))))
 
@@ -111,7 +112,9 @@
                                (fn []
                                  (js/console.error "Failed to request GitHub app tokens."))))
 
-                            (watch-for-date!))))))]
+                            (watch-for-date!)))
+                         (p/catch (fn [error]
+                                    (log/error :db/restore-failed error))))))]
     ;; clear this interval
     (let [interval-id (js/setInterval inner-fn 50)]
       (reset! interval interval-id))))

+ 1 - 1
src/main/frontend/handler/user.cljs

@@ -62,7 +62,7 @@
 (defn sign-out!
   [e]
   (->
-   (db/clear-local-storage-and-idb!)
+   (idb/clear-local-storage-and-idb!)
    (p/catch (fn [e]
               (println "sign out error: ")
               (js/console.dir e)))

+ 8 - 2
src/main/frontend/idb.cljs

@@ -4,7 +4,8 @@
             [goog.object :as gobj]
             [promesa.core :as p]
             [clojure.string :as string]
-            [frontend.config :as config]))
+            [frontend.config :as config]
+            [frontend.storage :as storage]))
 
 ;; offline db
 (def store-name "dbs")
@@ -16,13 +17,18 @@
 
 (defonce localforage-instance (.createInstance localforage store-name))
 
-(defn clear-store!
+(defn clear-idb!
   []
   (p/let [_ (.clear localforage-instance)
           dbs (js/window.indexedDB.databases)]
     (doseq [db dbs]
       (js/window.indexedDB.deleteDatabase (gobj/get db "name")))))
 
+(defn clear-local-storage-and-idb!
+  []
+  (storage/clear)
+  (clear-idb!))
+
 (defn remove-item!
   [key]
   (.removeItem localforage-instance key))

+ 5 - 5
src/main/frontend/state.cljs

@@ -507,11 +507,11 @@
   (when token-result
     (let [{:keys [token expires_at]} token-result]
       (swap! state update-in [:me :repos]
-       (fn [repos]
-         (map (fn [r]
-                (if (= repo (:url r))
-                  (merge r {:token token :expires_at expires_at})
-                  repo)) repos))))))
+             (fn [repos]
+               (map (fn [r]
+                      (if (= repo (:url r))
+                        (merge r {:token token :expires_at expires_at})
+                        repo)) repos))))))
 
 (defn set-github-installation-tokens!
   [tokens]

+ 5 - 0
src/main/frontend/util.cljs

@@ -19,6 +19,11 @@
             [clojure.pprint :refer [pprint]]
             [goog.userAgent]))
 
+(extend-protocol IPrintWithWriter
+  js/Symbol
+  (-pr-writer [sym writer _]
+    (-write writer (str "\"" (.toString sym) "\""))))
+
 ;; envs
 (defn ios?
   []