Skip to content

Commit

Permalink
Merge branch 'main' into baidupush
Browse files Browse the repository at this point in the history
  • Loading branch information
Ghlerrix committed Aug 10, 2023
2 parents 86f97ea + d1268ea commit 93c4ab2
Show file tree
Hide file tree
Showing 23 changed files with 9,695 additions and 102 deletions.
2 changes: 1 addition & 1 deletion .env.local
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables
NEXT_PUBLIC_VERSION=4.0.11
NEXT_PUBLIC_VERSION=4.0.12
9 changes: 7 additions & 2 deletions blog.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,15 @@ const BLOG = {
// ********挂件组件相关********
// ----> 评论互动 可同时开启多个支持 WALINE VALINE GISCUS CUSDIS UTTERRANCES GITALK

// artalk 评论插件
COMMENT_ARTALK_SERVER: process.env.NEXT_PUBLIC_COMMENT_ARTALK_SERVER || '', // ArtalkServert后端地址 https://artalk.js.org/guide/deploy.html
COMMENT_ARTALK_JS: process.env.NEXT_PUBLIC_COMMENT_ARTALK_JS || 'https://cdnjs.cloudflare.com/ajax/libs/artalk/2.5.5/Artalk.js', // ArtalkServert js cdn
COMMENT_ARTALK_CSS: process.env.NEXT_PUBLIC_COMMENT_ARTALK_CSS || 'https://cdnjs.cloudflare.com/ajax/libs/artalk/2.5.5/Artalk.css', // ArtalkServert css cdn

// twikoo
COMMENT_TWIKOO_ENV_ID: process.env.NEXT_PUBLIC_COMMENT_ENV_ID || '', // TWIKOO后端地址 腾讯云环境填envId;Vercel环境填域名,教程:https://tangly1024.com/article/notionnext-twikoo
COMMENT_TWIKOO_COUNT_ENABLE: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_COUNT_ENABLE || false, // 博客列表是否显示评论数
COMMENT_TWIKOO_CDN_URL: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL || 'https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js', // twikoo客户端cdn
COMMENT_TWIKOO_CDN_URL: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL || 'https://cdn.staticfile.org/twikoo/1.6.16/twikoo.min.js', // twikoo客户端cdn

// utterance
COMMENT_UTTERRANCES_REPO:
Expand Down Expand Up @@ -262,7 +267,7 @@ const BLOG = {
process.env.NEXT_PUBLIC_COMMENT_CUSDIS_HOST || 'https://cusdis.com', // data-host, change this if you're using self-hosted version
COMMENT_CUSDIS_SCRIPT_SRC:
process.env.NEXT_PUBLIC_COMMENT_CUSDIS_SCRIPT_SRC ||
'https://cusdis.com/js/cusdis.es.js', // change this if you're using self-hosted version
'/js/cusdis.es.js', // change this if you're using self-hosted version

// gitalk评论插件 更多参考 https://gitalk.github.io/
COMMENT_GITALK_REPO: process.env.NEXT_PUBLIC_COMMENT_GITALK_REPO || '', // 你的Github仓库名,例如 'NotionNext'
Expand Down
4 changes: 2 additions & 2 deletions components/Ackee.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ const handleAckee = async function(pathname, environment, options = {}) {
await loadExternalResource(BLOG.ANALYTICS_ACKEE_TRACKER, 'js')
const ackeeTracker = window.ackeeTracker

const instance = ackeeTracker.create(environment.server, options)
const instance = ackeeTracker?.create(environment.server, options)

if (instance == null) {
console.warn('Skipped record creation because useAckee has been called in a non-browser environment')
Expand All @@ -73,7 +73,7 @@ const handleAckee = async function(pathname, environment, options = {}) {
return
}

const attributes = ackeeTracker.attributes(options.detailed)
const attributes = ackeeTracker?.attributes(options.detailed)
const url = new URL(pathname, location)

return instance.record(environment.domainId, {
Expand Down
2 changes: 1 addition & 1 deletion components/AlgoliaSearchModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export default function AlgoliaSearchModal({ cRef }) {
}

return (
<div id='search-wrapper' className={`${isModalOpen ? 'opacity-100' : 'invisible opacity-0 pointer-events-none'} fixed h-screen w-screen left-0 top-0 mt-12 flex items-start justify-center`}>
<div id='search-wrapper' className={`${isModalOpen ? 'opacity-100' : 'invisible opacity-0 pointer-events-none'} z-30 fixed h-screen w-screen left-0 top-0 mt-12 flex items-start justify-center`}>

{/* 模态框 */}
<div className={`${isModalOpen ? 'opacity-100' : 'invisible opacity-0 translate-y-10'} flex flex-col justify-between w-full min-h-[10rem] max-w-xl dark:bg-hexo-black-gray dark:border-gray-800 bg-white dark:bg- p-5 rounded-lg z-50 shadow border hover:border-blue-600 duration-300 transition-all `}>
Expand Down
30 changes: 30 additions & 0 deletions components/Artalk.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import BLOG from '@/blog.config'
import { loadExternalResource } from '@/lib/utils'
// import { loadExternalResource } from '@/lib/utils'
import { useEffect } from 'react'

/**
* Giscus评论 @see https://giscus.app/zh-CN
* Contribute by @txs https://github.com/txs/NotionNext/commit/1bf7179d0af21fb433e4c7773504f244998678cb
* @returns {JSX.Element}
* @constructor
*/

const Artalk = ({ siteInfo }) => {
useEffect(() => {
loadExternalResource(BLOG.COMMENT_ARTALK_CSS, 'css')
window?.Artalk?.init({
server: BLOG.COMMENT_ARTALK_SERVER, // 后端地址
el: '#artalk', // 容器元素
locale: BLOG.LANG,
// pageKey: '/post/1', // 固定链接 (留空自动获取)
// pageTitle: '关于引入 Artalk 的这档子事', // 页面标题 (留空自动获取)
site: siteInfo?.title // 你的站点名
})
}, [])
return (
<div id="artalk"></div>
)
}

export default Artalk
6 changes: 5 additions & 1 deletion components/Comment.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import dynamic from 'next/dynamic'
import Tabs from '@/components/Tabs'
import { isBrowser } from '@/lib/utils'
import { useRouter } from 'next/router'
import Artalk from './Artalk'

const WalineComponent = dynamic(
() => {
Expand Down Expand Up @@ -66,7 +67,7 @@ BLOG.COMMENT_GISCUS_REPO || BLOG.COMMENT_CUSDIS_APP_ID || BLOG.COMMENT_UTTERRANC
* @param {*} param0
* @returns
*/
const Comment = ({ frontMatter, className }) => {
const Comment = ({ siteInfo, frontMatter, className }) => {
const router = useRouter()

if (isBrowser && ('giscus' in router.query || router.query.target === 'comment')) {
Expand All @@ -84,6 +85,9 @@ const Comment = ({ frontMatter, className }) => {
return (
<div key={frontMatter?.id} id='comment' className={`comment mt-5 text-gray-800 dark:text-gray-300 ${className || ''}`}>
<Tabs>
{BLOG.COMMENT_ARTALK_SERVER && (<div key='Artalk'>
<Artalk siteInfo={siteInfo} />
</div>)}

{BLOG.COMMENT_TWIKOO_ENV_ID && (<div key='Twikoo'>
<TwikooCompenent />
Expand Down
6 changes: 5 additions & 1 deletion components/CommonScript.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ const CommonScript = () => {
/>
</>)}

{BLOG.COMMENT_CUSDIS_APP_ID && <script defer src='https://cusdis.com/js/widget/lang/zh-cn.js' />}
{BLOG.COMMENT_CUSDIS_APP_ID && <script defer src={`https://cusdis.com/js/widget/lang/${BLOG.LANG.toLowerCase()}.js`} />}

{BLOG.COMMENT_TWIKOO_ENV_ID && <script defer src={BLOG.COMMENT_TWIKOO_CDN_URL}/> }

{BLOG.COMMENT_ARTALK_SERVER && <script defer src={BLOG.COMMENT_ARTALK_JS}/> }

{BLOG.COMMENT_TIDIO_ID && <script async src={`//code.tidio.co/${BLOG.COMMENT_TIDIO_ID}.js`} />}

Expand Down
6 changes: 4 additions & 2 deletions components/PrismMac.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,10 @@ const renderMermaid = async() => {
}
if (needLoad) {
loadExternalResource(BLOG.MERMAID_CDN, 'js').then(url => {
const mermaid = window.mermaid
mermaid.contentLoaded()
setTimeout(() => {
const mermaid = window.mermaid
mermaid?.contentLoaded()
}, 100)
})
}
}
Expand Down
29 changes: 9 additions & 20 deletions components/Twikoo.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import BLOG from '@/blog.config'
import { loadExternalResource } from '@/lib/utils'
// import { loadExternalResource } from '@/lib/utils'
import { useEffect } from 'react'
// import twikoo from 'twikoo'

/**
* Giscus评论 @see https://giscus.app/zh-CN
Expand All @@ -11,25 +10,15 @@ import { useEffect } from 'react'
*/

const Twikoo = ({ isDarkMode }) => {
const loadTwikoo = async () => {
try {
await loadExternalResource(BLOG.COMMENT_TWIKOO_CDN_URL, 'js')
const twikoo = window.twikoo
twikoo?.init({
envId: BLOG.COMMENT_TWIKOO_ENV_ID, // 腾讯云环境填 envId;Vercel 环境填地址(https://xxx.vercel.app)
el: '#twikoo', // 容器元素
lang: BLOG.LANG // 用于手动设定评论区语言,支持的语言列表 https://github.com/imaegoo/twikoo/blob/main/src/client/utils/i18n/index.js
// region: 'ap-guangzhou', // 环境地域,默认为 ap-shanghai,腾讯云环境填 ap-shanghai 或 ap-guangzhou;Vercel 环境不填
// path: location.pathname, // 用于区分不同文章的自定义 js 路径,如果您的文章路径不是 location.pathname,需传此参数
})
} catch (error) {
console.error('twikoo 加载失败', error)
}
}

useEffect(() => {
loadTwikoo()
}, [])
window?.twikoo?.init({
envId: BLOG.COMMENT_TWIKOO_ENV_ID, // 腾讯云环境填 envId;Vercel 环境填地址(https://xxx.vercel.app)
el: '#twikoo', // 容器元素
lang: BLOG.LANG // 用于手动设定评论区语言,支持的语言列表 https://github.com/imaegoo/twikoo/blob/main/src/client/utils/i18n/index.js
// region: 'ap-guangzhou', // 环境地域,默认为 ap-shanghai,腾讯云环境填 ap-shanghai 或 ap-guangzhou;Vercel 环境不填
// path: location.pathname, // 用于区分不同文章的自定义 js 路径,如果您的文章路径不是 location.pathname,需传此参数
})
}, [isDarkMode])
return (
<div id="twikoo"></div>
)
Expand Down
8 changes: 8 additions & 0 deletions lib/notion/mapImage.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ const mapImgUrl = (img, block, type = 'block', from) => {
ret = BLOG.NOTION_HOST + '/image/' + encodeURIComponent(ret) + '?table=' + type + '&id=' + block.id
}

// UnSplash 随机图片接口优化
if (ret.includes('source.unsplash.com/random')) {
// 检查原始URL是否已经包含参数
const separator = ret.includes('?') ? '&' : '?'
// 拼接唯一识别参数,防止请求的图片被缓存
ret = `${ret}${separator}random=${block.id}`
}

// 文章封面
if (from === 'pageCoverThumbnail') {
ret = compressImage(ret)
Expand Down
11 changes: 7 additions & 4 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,14 @@ export const memorize = (Component) => {
*/
export function loadExternalResource(url, type) {
// 检查是否已存在
const elements = document.querySelectorAll(`[href='${url}']`)
if (elements.length > 0 || !url) {
return
}
const elements = type === 'js' ? document.querySelectorAll(`[src='${url}']`) : document.querySelectorAll(`[href='${url}']`)

return new Promise((resolve, reject) => {
if (elements.length > 0 || !url) {
resolve(url)
return url
}

let tag

if (type === 'css') {
Expand Down

0 comments on commit 93c4ab2

Please sign in to comment.