Browse Source

fix(journal): handle non-standard journal name page-ref (#10434)

* fix(journal): handle non-standard journal name page-ref

Fix #10432
Andelf 2 years ago
parent
commit
cf829815af
2 changed files with 14 additions and 9 deletions
  1. 13 8
      src/main/frontend/components/block.cljs
  2. 1 1
      src/main/frontend/components/search.cljs

+ 13 - 8
src/main/frontend/components/block.cljs

@@ -530,15 +530,14 @@
              (state/get-left-sidebar-open?))
     (ui-handler/close-left-sidebar!)))
 
-(rum/defcs page-inner <
-  (rum/local false ::mouse-down?)
+(rum/defc page-inner
   "The inner div of page reference component
 
    page-name-in-block is the overridable name of the page (legacy)
 
    All page-names are sanitized except page-name-in-block"
-  [state config page-name-in-block page-name redirect-page-name page-entity contents-page? children html-export? label whiteboard-page?]
-  (let [*mouse-down? (::mouse-down? state)
+  [config page-name-in-block page-name redirect-page-name page-entity contents-page? children html-export? label whiteboard-page?]
+  (let [[mouse-down? set-mouse-down!] (rum/use-state false) ;; avoid click event after drag
         tag? (:tag? config)
         config (assoc config :whiteboard-page? whiteboard-page?)
         untitled? (model/untitled-page? page-name)]
@@ -551,11 +550,17 @@
       :data-ref page-name
       :draggable true
       :on-drag-start (fn [e] (editor-handler/block->data-transfer! page-name-in-block e))
-      :on-mouse-down (fn [_e] (reset! *mouse-down? true))
+      :on-mouse-down #(set-mouse-down! true)
       :on-mouse-up (fn [e]
-                     (when @*mouse-down?
-                       (open-page-ref e page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?)
-                       (reset! *mouse-down? false)))
+                     (when mouse-down?
+                       ;; when page-entity is nil and page name is journal page(not the current format),
+                       ;; convert title then redirect
+                       (let [redirect-page-name (or (and (nil? page-entity)
+                                                         (date/journal-title->custom-format page-name))
+                                                    redirect-page-name)
+                             redirect-page-name (string/lower-case redirect-page-name)]
+                         (open-page-ref e page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?))
+                       (set-mouse-down! false)))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
                            (open-page-ref e page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?)))}
 

+ 1 - 1
src/main/frontend/components/search.cljs

@@ -154,7 +154,7 @@
     ;; If it's a journal title or journal file name, translate the title
     :new-page
     (if-let [journal-title (date/journal-title->custom-format search-q)]
-        (page-handler/create! journal-title {:redirect? true})
+        (page-handler/create! journal-title {:redirect? true :journal? true})
         (page-handler/create! search-q {:redirect? true}))
 
     :new-whiteboard