Przeglądaj źródła

fix: do not show links for the current page

Peng Xiao 2 lat temu
rodzic
commit
9dff0db9ac

+ 1 - 0
src/main/frontend/extensions/tldraw.cljs

@@ -78,6 +78,7 @@
 (defn get-tldraw-handlers [current-whiteboard-name]
   {:search search-handler
    :queryBlockByUUID #(clj->js (model/query-block-by-uuid (parse-uuid %)))
+   :getBlockPageName #(:block/name (model/get-block-page (state/get-current-repo) (parse-uuid %)))
    :isWhiteboardPage model/whiteboard-page?
    :saveAsset save-asset-handler
    :makeAssetUrl editor-handler/make-asset-url

+ 1 - 1
src/main/frontend/handler/whiteboard.cljs

@@ -96,7 +96,7 @@
               :selectedIds #js[]
               :pages [(merge tldr-page
                              {:id id
-                              :name "page"
+                              :name (:block/name page-block)
                               :shapes shapes})]})))
 
 (defn transact-tldr! [page-name tldr]

+ 1 - 1
tldraw/apps/tldraw-logseq/src/components/BlockLink/BlockLink.tsx

@@ -12,7 +12,7 @@ export const BlockLink = ({
 }) => {
   const {
     handlers: { isWhiteboardPage, redirectToPage, sidebarAddBlock, queryBlockByUUID },
-    renderers: { Breadcrumb, PageName, BlockReference },
+    renderers: { Breadcrumb, PageName },
   } = React.useContext(LogseqContext)
 
   let iconName = ''

+ 10 - 2
tldraw/apps/tldraw-logseq/src/components/QuickLinks/QuickLinks.tsx

@@ -1,10 +1,13 @@
-import type { TLQuickLinksComponent } from '@tldraw/react'
+import { TLQuickLinksComponent, useApp } from '@tldraw/react'
 import { observer } from 'mobx-react-lite'
 import React from 'react'
 import type { Shape } from '../../lib'
+import { LogseqContext } from '../../lib/logseq-context'
 import { BlockLink } from '../BlockLink'
 
 export const QuickLinks: TLQuickLinksComponent<Shape> = observer(({ shape }) => {
+  const app = useApp()
+  const { handlers } = React.useContext(LogseqContext)
   const links = React.useMemo(() => {
     const links = [...(shape.props.refs ?? [])].map<[ref: string, showReferenceContent: boolean]>(
       // user added links should show the referenced block content
@@ -16,7 +19,12 @@ export const QuickLinks: TLQuickLinksComponent<Shape> = observer(({ shape }) =>
       links.unshift([shape.props.pageId, false])
     }
 
-    return links
+    // do not show links for the current page
+    return links.filter(
+      link =>
+        link[0].toLowerCase() !== app.currentPage.name &&
+        handlers.getBlockPageName(link[0]) !== app.currentPage.name
+    )
   }, [shape.props.type, shape.props.parentId, shape.props.refs])
 
   if (links.length === 0) return null

+ 1 - 0
tldraw/apps/tldraw-logseq/src/lib/logseq-context.ts

@@ -43,6 +43,7 @@ export interface LogseqContextValue {
     addNewWhiteboard: (pageName: string) => void
     addNewBlock: (content: string) => string // returns the new block uuid
     queryBlockByUUID: (uuid: string) => any
+    getBlockPageName: (uuid: string) => string
     isWhiteboardPage: (pageName: string) => boolean
     saveAsset: (file: File) => Promise<string>
     makeAssetUrl: (relativeUrl: string) => string