Merge remote-tracking branch 'origin/feat/notion-page-link-convert' into release/4.5.2

This commit is contained in:
tangly1024.com
2024-05-13 12:16:13 +08:00
4 changed files with 138 additions and 88 deletions

40
lib/notion/mapPageUrl.js Normal file
View File

@@ -0,0 +1,40 @@
import { uuidToId } from 'notion-utils'
import { checkStrIsNotionId, getLastPartOfUrl, isBrowser } from '../utils'
/**
* 处理页面内连接跳转:
* 1. 若是本站域名,则在当前窗口打开、不开新窗口
* 2. 若是Notion笔记中的内链尝试转换成博客中现有的文章地址
*/
export const mapPageUrl = allPages => {
if (isBrowser) {
const currentURL = window.location.origin + window.location.pathname
const allAnchorTags = document.getElementsByTagName('a') // 或者使用 document.querySelectorAll('a') 获取 NodeList
for (const anchorTag of allAnchorTags) {
// 检查url
if (anchorTag?.href) {
// 如果url是一个Notion_id尝试匹配成博客的文章内链
const slug = getLastPartOfUrl(anchorTag.href)
if (checkStrIsNotionId(slug)) {
const slugPage = allPages?.find(page => uuidToId(page.id) === slug)
if (slugPage) {
anchorTag.href = slugPage?.href
}
}
}
if (anchorTag?.target === '_blank') {
const hrefWithoutQueryHash = anchorTag.href.split('?')[0].split('#')[0]
const hrefWithRelativeHash =
currentURL.split('#')[0] + anchorTag.href.split('#')[1]
if (
currentURL === hrefWithoutQueryHash ||
currentURL === hrefWithRelativeHash
) {
anchorTag.target = '_self'
}
}
}
}
}