Browse Source

fix: UI is not refreshed when editing empty pages

Tienson Qin 4 years ago
parent
commit
8c9f2dc266
2 changed files with 23 additions and 19 deletions
  1. 16 13
      src/main/frontend/db/react.cljs
  2. 7 6
      src/main/frontend/state.cljs

+ 16 - 13
src/main/frontend/db/react.cljs

@@ -157,21 +157,24 @@
 
 
 (defn- new-db
 (defn- new-db
   [cached-result tx-data old-db k]
   [cached-result tx-data old-db k]
-  (when (and (coll? cached-result)
-             (map? (first cached-result)))
-    (try
-      (let [db (or old-db
+  (try
+    (let [empty-db (d/empty-db db-schema/schema)
+          db (or old-db
+                 (when (and (coll? cached-result)
+                            (or (map? (first cached-result))
+                                (empty? cached-result)))
                    (let [cached-result (util/remove-nils cached-result)]
                    (let [cached-result (util/remove-nils cached-result)]
-                     (-> (d/empty-db db-schema/schema)
+                     (-> empty-db
                          (d/with cached-result)
                          (d/with cached-result)
-                         (:db-after))))]
-        (:db-after (d/with db tx-data)))
-      (catch js/Error e
-        (prn "New db: " {:k k
-                         :old-db old-db
-                         :cached-result cached-result})
-        (js/console.error e)
-        old-db))))
+                         (:db-after)))))]
+      (when db
+        (:db-after (d/with db tx-data))))
+    (catch js/Error e
+      (prn "New db: " {:k k
+                       :old-db old-db
+                       :cached-result cached-result})
+      (js/console.error e)
+      old-db)))
 
 
 (defn get-query-cached-result
 (defn get-query-cached-result
   [k]
   [k]

+ 7 - 6
src/main/frontend/state.cljs

@@ -1619,15 +1619,16 @@
   [ks]
   [ks]
   (get-in @state [:reactive/query-dbs ks]))
   (get-in @state [:reactive/query-dbs ks]))
 
 
-(defn set-reactive-query-db!
-  [ks db-value]
-  (when db-value
-    (set-state! [:reactive/query-dbs ks] db-value)))
-
 (defn delete-reactive-query-db!
 (defn delete-reactive-query-db!
   [ks]
   [ks]
   (update-state! :reactive/query-dbs (fn [dbs] (dissoc dbs ks))))
   (update-state! :reactive/query-dbs (fn [dbs] (dissoc dbs ks))))
 
 
+(defn set-reactive-query-db!
+  [ks db-value]
+  (if db-value
+    (set-state! [:reactive/query-dbs ks] db-value)
+    (delete-reactive-query-db! ks)))
+
 (defn get-modal-id
 (defn get-modal-id
   []
   []
-  (:modal/id @state))
+  (:modal/id @state))