Browse Source

fix: favorites

Tienson Qin 1 year ago
parent
commit
2c29cbd495

+ 2 - 3
src/main/frontend/components/container.cljs

@@ -168,10 +168,9 @@
      (when (seq favorite-entities)
        (let [favorites (map
                         (fn [e]
-                          (let [name (:block/name e)
-                                icon (icon/get-page-icon e {})]
+                          (let [icon (icon/get-page-icon e {})]
                             {:id (str (:db/id e))
-                             :value name
+                             :value (:block/uuid e)
                              :content [:li.favorite-item (page-name e icon false)]}))
                         favorite-entities)]
          (dnd-component/items favorites

+ 10 - 8
src/main/frontend/components/page.cljs

@@ -423,9 +423,15 @@
 
 (defn get-page-entity
   [page-name]
-  (if-let [block-id (parse-uuid page-name)]
-    (db/entity [:block/uuid block-id])
-    (db/entity (ldb/get-first-page-by-name (db/get-db) page-name))))
+  (cond
+    (uuid? page-name)
+    (db/entity [:block/uuid page-name])
+
+    (common-util/uuid-string? page-name)
+    (db/entity [:block/uuid (uuid page-name)])
+
+    :else
+    (db/get-page page-name)))
 
 (defn- get-sanity-page-name
   [state page-name]
@@ -467,7 +473,6 @@
                         (= page-name (util/page-name-sanity-lc (date/journal-name))))
                 *control-show? (::control-show? state)
                 *all-collapsed? (::all-collapsed? state)
-                *current-block-page (::current-page state)
                 block-or-whiteboard? (or block? whiteboard?)
                 home? (= :home (state/get-current-route))]
             (when (or page-name block-or-whiteboard?)
@@ -527,10 +532,7 @@
                      [:div.space-y-2
                       (shui/skeleton {:class "h-6 w-full"})
                       (shui/skeleton {:class "h-6 w-full"})]
-                     (let [_ (and block? page (reset! *current-block-page (:block/name (:block/page page))))
-                           _ (when (and block? (not page))
-                               (route-handler/redirect-to-page! @*current-block-page))]
-                       (page-blocks-cp repo page {:sidebar? sidebar? :whiteboard? whiteboard?})))]])
+                     (page-blocks-cp repo page {:sidebar? sidebar? :whiteboard? whiteboard?}))]])
 
                (when today?
                  (today-queries repo today? sidebar?))

+ 11 - 11
src/main/frontend/handler/common/page.cljs

@@ -71,7 +71,7 @@
 
 ;; favorite fns
 ;; ============
-(defn favorited?
+(defn file-favorited?
   [page-name]
   (let [favorites (->> (:favorites (state/get-config))
                        (filter string?)
@@ -79,7 +79,7 @@
                        (set))]
     (contains? favorites page-name)))
 
-(defn favorite-page!
+(defn file-favorite-page!
   [page-name]
   (when-not (string/blank? page-name)
     (let [favorites (->
@@ -90,7 +90,7 @@
                      (vec))]
       (config-handler/set-config! :favorites favorites))))
 
-(defn unfavorite-page!
+(defn file-unfavorite-page!
   [page-name]
   (when-not (string/blank? page-name)
     (let [old-favorites (:favorites (state/get-config))
@@ -111,12 +111,12 @@
                     block))
                 blocks))))))
 
-(defn favorited?-v2
+(defn db-favorited?
   [page-block-uuid]
   {:pre [(uuid? page-block-uuid)]}
   (some? (find-block-in-favorites-page page-block-uuid)))
 
-(defn <favorite-page!-v2
+(defn <db-favorite-page!
   [page-block-uuid]
   {:pre [(uuid? page-block-uuid)]}
   (let [favorites-page (db/get-page common-config/favorites-page-name)]
@@ -129,7 +129,7 @@
                                     (db/get-page common-config/favorites-page-name)
                                     {}))))))
 
-(defn <unfavorite-page!-v2
+(defn <db-unfavorite-page!
   [page-block-uuid]
   {:pre [(uuid? page-block-uuid)]}
   (when-let [block (find-block-in-favorites-page page-block-uuid)]
@@ -170,8 +170,8 @@
       ;; TODO: move favorite && unfavorite to worker too
     (if (config/db-based-graph? repo)
       (when-let [page-block-uuid (:block/uuid (db/get-page page-name))]
-        (<unfavorite-page!-v2 page-block-uuid))
-      (unfavorite-page! page-name))
+        (<db-unfavorite-page! page-block-uuid))
+      (file-unfavorite-page! page-name))
 
     (when (and (not= :rename-page (:real-outliner-op tx-meta))
                (= (some-> (state/get-current-page) common-util/page-name-sanity-lc)
@@ -215,9 +215,9 @@
                                 :path-params {:name (str (:block/uuid page))}}))
 
     ;; FIXME: favorites should store db id/uuid instead of page names
-    (when (and (config/db-based-graph? repo) (favorited? old-page-name))
-      (unfavorite-page! old-page-name)
-      (favorite-page! new-page-name))
+    (when (and (config/db-based-graph? repo) (file-favorited? old-page-name))
+      (file-unfavorite-page! old-page-name)
+      (file-favorite-page! new-page-name))
     (let [home (get (state/get-config) :default-home {})]
       (when (= old-page-name (common-util/page-name-sanity-lc (get home :page "")))
         (config-handler/set-config! :default-home (assoc home :page new-name))))

+ 16 - 19
src/main/frontend/handler/page.cljs

@@ -52,8 +52,8 @@
    (let [repo (state/get-current-repo)]
      (if (config/db-based-graph? repo)
        (when-let [page-block-uuid (:block/uuid (db/get-page page-name))]
-         (page-common-handler/<unfavorite-page!-v2 page-block-uuid))
-       (page-common-handler/unfavorite-page! page-name)))
+         (page-common-handler/<db-unfavorite-page! page-block-uuid))
+       (page-common-handler/file-unfavorite-page! page-name)))
    (state/update-favorites-updated!)))
 
 (defn <favorite-page!
@@ -62,8 +62,8 @@
    (let [repo (state/get-current-repo)]
      (if (config/db-based-graph? repo)
        (when-let [page-block-uuid (:block/uuid (db/get-page page-name))]
-         (page-common-handler/<favorite-page!-v2 page-block-uuid))
-       (page-common-handler/favorite-page! page-name)))
+         (page-common-handler/<db-favorite-page! page-block-uuid))
+       (page-common-handler/file-favorite-page! page-name)))
    (state/update-favorites-updated!)))
 
 (defn favorited?
@@ -72,8 +72,8 @@
     (if (config/db-based-graph? repo)
       (boolean
        (when-let [page-block-uuid (:block/uuid (db/get-page page-name))]
-         (page-common-handler/favorited?-v2 page-block-uuid)))
-      (page-common-handler/favorited? page-name))))
+         (page-common-handler/db-favorited? page-block-uuid)))
+      (page-common-handler/file-favorited? page-name))))
 
 
 (defn get-favorites
@@ -82,10 +82,9 @@
   (when-let [db (conn/get-db)]
     (let [repo (state/get-current-repo)]
       (if (config/db-based-graph? repo)
-        (when-let [page-id (ldb/get-first-page-by-name db common-config/favorites-page-name)]
-          (let [page (d/entity db page-id)
-                blocks (ldb/sort-by-left
-                        (ldb/get-page-blocks db page-id {})
+        (when-let [page (ldb/get-page db common-config/favorites-page-name)]
+          (let [blocks (ldb/sort-by-left
+                        (ldb/get-page-blocks db (:db/id page) {})
                         page)]
             (keep (fn [block]
                     (when-let [block-db-id (:db/id (:block/link block))]
@@ -146,16 +145,14 @@
 
 (defn <reorder-favorites!
   [favorites]
-  (let [conn (conn/get-db false)
-        db @conn]
-    (when-let [page-id (db/get-page common-config/favorites-page-name)]
-      (let [favorites-page-entity (d/entity db page-id)
-            favorite-page-block-db-id-coll
-            (keep (fn [page-name]
-                    (:db/id (db/get-page page-name)))
+  (let [conn (conn/get-db false)]
+    (when-let [favorites-page (db/get-page common-config/favorites-page-name)]
+      (let [favorite-page-block-db-id-coll
+            (keep (fn [page-uuid]
+                    (:db/id (db/get-page page-uuid)))
                   favorites)
-            current-blocks (ldb/sort-by-left (ldb/get-page-blocks @conn common-config/favorites-page-name {})
-                                             favorites-page-entity)]
+            current-blocks (ldb/sort-by-left (ldb/get-page-blocks @conn (:db/id favorites-page) {})
+                                             favorites-page)]
         (p/do!
          (ui-outliner-tx/transact!
           {}