mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-08-10 20:48:42 +08:00
- wordcount/min2read/totalcount built-in helpers (replaces hexo-wordcount) - cloudTags random sort support - waline lightbox via MutationObserver - subtitle: seq guard prevents stale API response race - newest-comments: escapeHtml XSS fix, unified fetchAndRender with cache fallback - katex: try/catch asset load, encrypt re-render - chartjs: destroy charts on pjax, fix theme property check - mathjax: DOMContentLoaded instead of load - mermaid: clean stale error elements - medium-zoom: single instance, detach on pjax - getScrollPercent: WeakMap cache with resize invalidation - overflowPaddingR: avoid stale DOM refs - readmode: dedupe button, pjax cleanup - hexo-blog-decrypt: null-guard translateFn and encryptFn - tw_cn: expand skipped translate tags - localStorage: try/catch setItem - cdn.js: fix [lib|dist]* character class regex bug - findArchivesTitle: support custom archive_dir - shuoshuoFN: guard moment.tz when timezone empty - umami: no-store cache, error handling, path param - artalk: vote config option - bump version 5.7.1.260810
50 lines
1.6 KiB
Plaintext
50 lines
1.6 KiB
Plaintext
!= partial("includes/third-party/newest-comments/common.pug", {}, { cache: true })
|
|
|
|
script.
|
|
window.newestComments.ready(() => {
|
|
const keyName = 'github-newest-comments'
|
|
const { changeContent, run } = window.newestComments
|
|
|
|
const findTrueUrl = array => {
|
|
return Promise.all(array.map(item =>
|
|
fetch(item.url)
|
|
.then(resp => resp.json())
|
|
.then(data => {
|
|
let urlArray = data.body ? data.body.match(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/ig) : []
|
|
if (!Array.isArray(urlArray) || urlArray.length === 0) {
|
|
urlArray = [item.html_url]
|
|
}
|
|
const isBot = data.user && data.user.login === 'utterances-bot'
|
|
return isBot ? urlArray.pop() : urlArray.shift()
|
|
})
|
|
.catch(() => item.html_url)
|
|
)).then(res => array.map((item, index) => {
|
|
return {
|
|
...item,
|
|
url: res[index]
|
|
}
|
|
}))
|
|
}
|
|
|
|
const getComment = () => {
|
|
return fetch('https://api.github.com/repos/!{userRepo}/issues/comments?sort=updated&direction=desc&per_page=!{newestCommentsLimit}&page=1', {
|
|
"headers": {
|
|
Accept: 'application/vnd.github.v3.html+json'
|
|
}
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => data.map(item => {
|
|
return {
|
|
'avatar': item.user.avatar_url,
|
|
'content': changeContent(item.body_html || item.body),
|
|
'nick': item.user.login,
|
|
'url': item.html_url,
|
|
'date': item.updated_at
|
|
}
|
|
}))
|
|
.then(findTrueUrl)
|
|
}
|
|
|
|
run(keyName, getComment)
|
|
})
|