This repository has been archived on 2025-06-28. You can view files and clone it, but cannot push or open issues or pull requests.
Files
vitepress-theme-blog-charle…/repos/.vitepress/theme/components/Comment.vue

95 lines
2.6 KiB
Vue

<template>
<div v-if="!globalHideComments" id="comment-container"></div>
</template>
<script lang="ts" setup>
import { computed, onMounted } from 'vue'
import { useData } from 'vitepress'
import Gitalk from 'gitalk'
import '../styles/gitalk.css'
const { theme, frontmatter } = useData()
const commentConfig = theme.value.commentConfig
const globalHideComments = commentConfig.hideComments ?? false
onMounted(() => {
if (globalHideComments) {
return
}
switch (commentConfig.type) {
case 'gitalk':
renderGitalk(commentConfig.options)
break
default:
break
}
})
/**
* 渲染Gitalk
*
* @param options Gitalk配置
*/
function renderGitalk(options) {
const gitalkConfig = {
clientID: options.clientID,
clientSecret: options.clientSecret,
repo: options.repo,
owner: options.owner,
admin: options.admin,
id: decodeURI(window.location.pathname),
language: options.language,
distractionFreeMode: options.distractionFreeMode,
pagerDirection: options.pagerDirection,
proxy: options.pagerDirection
}
const gitalk = new Gitalk(gitalkConfig)
gitalk.render('comment-container')
/*
// 感谢: dingqianwen/my-blog
// 访问量 如果不存在此标签,则进行创建
if (!document.getElementsByClassName('browse—count')[0]) {
let element = document.getElementsByClassName('page-meta')[0];
let newElement = document.createElement('div');
newElement.className = 'meta-item contributors browse—count';
$api.pvIncr(md5(value.path), function (data) {
newElement.innerHTML = `<span class="meta-item-label">浏览: </span><span class="meta-item-info">${data.toLocaleString('en-US')}</span>`;
element.appendChild(newElement)
})
}
// 如果点赞,先判断有没有登录
let $gc = $('#gitalk-container');
$gc.on('click', '.gt-comment-like', function () {
if (!localStorage.getItem('GT_ACCESS_TOKEN')) {
$warning('亲,你还没有登录哦!');
return false;
}
return true;
})
// 评论提交评论后输入框高度没有重置bug
$gc.on('click', '.gt-header-controls .gt-btn-public', function () {
let $gt = $('.gt-header-textarea');
$gt.css('height', '72px');
})
// 点击预览时,隐藏评论按钮
$gc.on('click', '.gt-header-controls .gt-btn-preview', function () {
let pl = $('.gt-header-controls .gt-btn-public');
if (pl.hasClass('hide')) {
pl.removeClass('hide');
} else {
// 隐藏
pl.addClass('hide');
}
})*/
// handleCommentPreview bug 点击编辑时也会调用预览接口
/*if(!_this.state.isPreview){
return;
}*/
}
</script>
<style scoped>
</style>