Browse Source

fix(sidebar): fix sider display problem when update or delete a page

defclass 5 years ago
parent
commit
80d715e948
2 changed files with 37 additions and 18 deletions
  1. 23 18
      src/main/frontend/components/right_sidebar.cljs
  2. 14 0
      src/main/frontend/db.cljs

+ 23 - 18
src/main/frontend/components/right_sidebar.cljs

@@ -135,7 +135,7 @@
           (block-cp repo idx block-data)]]))
 
     :page
-    (let [page-name (get-in block-data [:page :page/name])]
+    (let [page-name (:page/name block-data)]
       [[:a {:href (rfe/href :page {:name (util/url-encode page-name)})}
         (util/capitalize-all page-name)]
        [:div.ml-2
@@ -171,24 +171,29 @@
 
 (rum/defc sidebar-item < rum/reactive
   [repo idx db-id block-type block-data t]
-  (let [collapse? (state/sub [:ui/sidebar-collapsed-blocks db-id])
-        item (build-sidebar-item repo idx db-id block-type block-data t)]
+  (let [item
+        (if (= :page block-type)
+          (let [page (db/query-entity-in-component db-id)]
+            (when (seq page)
+              (build-sidebar-item repo idx db-id block-type page t)))
+          (build-sidebar-item repo idx db-id block-type block-data t))]
     (when item
-      [:div.sidebar-item.content
-       (let [[title component] item]
-         [:div.flex.flex-col
-          [:div.flex.flex-row.justify-between
-           [:div.flex.flex-row.justify-center
-            [:a.opacity-50.hover:opacity-100.flex.items-center.pr-1
-             {:on-click #(state/sidebar-block-toggle-collapse! db-id)}
-             (if collapse?
-               (svg/caret-right)
-               (svg/caret-down))]
-            [:div.ml-1
-             title]]
-           (close #(state/sidebar-remove-block! idx))]
-          [:div {:class (if collapse? "hidden" "initial")}
-           component]])])))
+      (let [collapse? (state/sub [:ui/sidebar-collapsed-blocks db-id])]
+        [:div.sidebar-item.content
+         (let [[title component] item]
+           [:div.flex.flex-col
+            [:div.flex.flex-row.justify-between
+             [:div.flex.flex-row.justify-center
+              [:a.opacity-50.hover:opacity-100.flex.items-center.pr-1
+               {:on-click #(state/sidebar-block-toggle-collapse! db-id)}
+               (if collapse?
+                 (svg/caret-right)
+                 (svg/caret-down))]
+              [:div.ml-1
+               title]]
+             (close #(state/sidebar-remove-block! idx))]
+            [:div {:class (if collapse? "hidden" "initial")}
+             component]])]))))
 
 (defn- get-page
   [match]

+ 14 - 0
src/main/frontend/db.cljs

@@ -213,6 +213,20 @@
    (when-let [db (get-conn repo)]
      (d/entity db id-or-lookup-ref))))
 
+(defn query-entity-in-component
+  ([id-or-lookup-ref]
+   (entity (state/get-current-repo) id-or-lookup-ref))
+  ([repo id-or-lookup-ref]
+   (let [k [:entity id-or-lookup-ref]
+         result-atom (:result (get @query-state k))]
+     (when-let [component *query-component*]
+       (add-query-component! k component))
+     (when-let [db (get-conn repo)]
+       (let [result (d/entity db id-or-lookup-ref)
+             result-atom (or result-atom (atom nil))]
+         (set! (.-state result-atom) result)
+         (add-q! k nil nil result-atom identity identity identity))))))
+
 (def touch d/touch)
 
 (defn get-current-page