Procházet zdrojové kódy

fix(perf): don't refresh kv and custom queries when loading blocks

Both kv and custom queries should be refreshed only if there're new
db transactions.
Tienson Qin před 5 měsíci
rodič
revize
39c8a9752c

+ 1 - 1
src/main/frontend/db/async.cljs

@@ -143,7 +143,7 @@
                               (remove empty?))]
              (when (seq tx-data) (d/transact! conn tx-data))
              (when-not skip-refresh?
-               (react/refresh-affected-queries! graph affected-keys))))
+               (react/refresh-affected-queries! graph affected-keys {:skip-kv-custom-keys? true}))))
 
          (if children-only? children block))
        (p/catch (fn [error]

+ 4 - 2
src/main/frontend/db/react.cljs

@@ -173,7 +173,8 @@
       (set-new-result! k result'))))
 
 (defn refresh-affected-queries!
-  [repo-url affected-keys]
+  [repo-url affected-keys & {:keys [skip-kv-custom-keys?]
+                             :or {skip-kv-custom-keys? false}}]
   (util/profile
    "refresh!"
    (let [db (conn/get-db repo-url)
@@ -186,7 +187,8 @@
                                 [k' cache]))) @query-state)
                     (into {}))
          all-keys (concat (distinct affected-keys)
-                          (filter #(contains? #{:custom :kv} (first %)) (keys state)))]
+                          (when-not skip-kv-custom-keys?
+                            (filter #(contains? #{:custom :kv} (first %)) (keys state))))]
      (doseq [k all-keys]
        (when-let [cache (get state k)]
          (let [{:keys [query query-fn]} cache