mirror of https://github.com/logseq/logseq
fix: whiteboard links
parent
c018f1517d
commit
a78c20eeed
|
@ -159,7 +159,8 @@
|
|||
{:will-mount (fn [state]
|
||||
(let [page-e (second (:rum/args state))
|
||||
page-name (:block/name page-e)]
|
||||
(when (and (db/journal-page? page-name)
|
||||
(when (and page-name
|
||||
(db/journal-page? page-name)
|
||||
(>= (date/journal-title->int page-name)
|
||||
(date/journal-title->int (date/today))))
|
||||
(state/pub-event! [:journal/insert-template page-name])))
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
[frontend.db :as db]
|
||||
[frontend.extensions.pdf.assets :as pdf-assets]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.assets :as assets-handler]
|
||||
[frontend.handler.route :as route-handler]
|
||||
[frontend.handler.whiteboard :as whiteboard-handler]
|
||||
|
@ -139,17 +140,21 @@
|
|||
(state/sidebar-add-block! (state/get-current-repo)
|
||||
(:db/id (model/get-page uuid))
|
||||
(keyword type)))
|
||||
:redirectToPage (fn [block-uuid-str]
|
||||
(when (and block-uuid-str (common-util/uuid-string? block-uuid-str))
|
||||
(let [block-id (parse-uuid block-uuid-str)
|
||||
page (model/get-block-page (state/get-current-repo) block-id)
|
||||
:redirectToPage (fn [page-name-or-uuid] ; FIXME whiteboard link refs should store UUIDs instead of page names
|
||||
(when page-name-or-uuid
|
||||
(let [block-id (parse-uuid page-name-or-uuid)
|
||||
page (if block-id
|
||||
(model/get-block-page (state/get-current-repo) block-id)
|
||||
(db/get-page page-name-or-uuid))
|
||||
whiteboard? (model/whiteboard-page? page)]
|
||||
(when page
|
||||
(if whiteboard?
|
||||
(route-handler/redirect-to-page! (:block/uuid page)
|
||||
(when (not= block-id (:block/uuid page))
|
||||
{:block-id block-id}))
|
||||
(route-handler/redirect-to-page! (model/get-redirect-page-name (:block/name page))))))))})
|
||||
(p/let [new-page (when (nil? page)
|
||||
(page-handler/<create! page-name-or-uuid {:redirect? false}))
|
||||
page' (or new-page page)]
|
||||
(route-handler/redirect-to-page! (if whiteboard?
|
||||
(:block/uuid page')
|
||||
(model/get-redirect-page-name (:block/name page')))
|
||||
(when (and block-id (not= block-id (:block/uuid page')))
|
||||
{:block-id block-id}))))))})
|
||||
|
||||
(defonce *transact-result (atom nil))
|
||||
|
||||
|
|
|
@ -70,32 +70,35 @@
|
|||
:path-params {:name (str page-name)}}))
|
||||
|
||||
(defn redirect-to-page!
|
||||
"Must ensure `page-name` is dereferenced (not an alias), or it will create a
|
||||
wrong new page with that name (#3511). page-name can be a block name or uuid"
|
||||
"`page-name` can be a block uuid or name, prefer to use uuid than name when possible"
|
||||
([page-name]
|
||||
(redirect-to-page! page-name {}))
|
||||
([page-name {:keys [anchor push click-from-recent? block-id new-whiteboard?]
|
||||
:or {click-from-recent? false}}]
|
||||
(when (or (uuid? page-name)
|
||||
(and (string? page-name) (not (string/blank? page-name))))
|
||||
;; Always skip onboarding when loading an existing whiteboard
|
||||
(when-not new-whiteboard? (state/set-onboarding-whiteboard! true))
|
||||
(when-let [db-id (:db/id (db/get-page page-name))]
|
||||
(recent-handler/add-page-to-recent! db-id click-from-recent?))
|
||||
(if (and (= (str page-name) (state/get-current-page)) block-id)
|
||||
(state/focus-whiteboard-shape block-id)
|
||||
(let [m (cond->
|
||||
(default-page-route (str page-name))
|
||||
(let [page (db/get-page page-name)
|
||||
whiteboard? (db/whiteboard-page? page)]
|
||||
;; Always skip onboarding when loading an existing whiteboard
|
||||
(when-not new-whiteboard? (state/set-onboarding-whiteboard! true))
|
||||
(when-let [db-id (:db/id page)]
|
||||
(recent-handler/add-page-to-recent! db-id click-from-recent?))
|
||||
(if (and whiteboard? (= (str page-name) (state/get-current-page)) block-id)
|
||||
(state/focus-whiteboard-shape block-id)
|
||||
(let [m (cond->
|
||||
(default-page-route (str page-name))
|
||||
|
||||
block-id
|
||||
(assoc :query-params {:block-id anchor})
|
||||
block-id
|
||||
(assoc :query-params (if whiteboard?
|
||||
{:block-id block-id}
|
||||
{:anchor (str "ls-block-" block-id)}))
|
||||
|
||||
anchor
|
||||
(assoc :query-params {:anchor anchor})
|
||||
anchor
|
||||
(assoc :query-params {:anchor anchor})
|
||||
|
||||
(boolean? push)
|
||||
(assoc :push push))]
|
||||
(redirect! m))))))
|
||||
(boolean? push)
|
||||
(assoc :push push))]
|
||||
(redirect! m)))))))
|
||||
|
||||
(defn get-title
|
||||
[name path-params]
|
||||
|
|
Loading…
Reference in New Issue