Skip to content

Commit e9ce245

Browse files
committed
(giscus) fixed Giscus state updating issue
1 parent bb80a5a commit e9ce245

2 files changed

Lines changed: 34 additions & 20 deletions

File tree

docs/assets/js/giscus.js

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,49 @@
11
const giscusPlugin = (hook, vm) => {
22
hook.ready(() => {
3-
// Move giscus container to content area.
3+
// Move Giscus container to content area.
44
const content = document.querySelector('.content')
55
const giscusContainer = document.querySelector(`.giscus`)
66
if (content && giscusContainer) {
77
content.appendChild(giscusContainer)
88
}
9-
// Add theme toggle event.
9+
// Initial theme setup.
10+
const iframe = document.querySelector('.giscus-frame')
1011
const themeToggle = document.getElementById('docsify-darklight-theme')
11-
if (themeToggle) {
12-
themeToggle.addEventListener('click', () => toggleGiscusTheme(themeToggle))
13-
toggleGiscusTheme(themeToggle)
12+
if (iframe && themeToggle) {
13+
toggleGiscusTheme(themeToggle, iframe)
1414
}
1515
})
16+
hook.doneEach(() => {
17+
// Update `term` parameter.
18+
const iframe = document.querySelector('.giscus-frame')
19+
if (iframe) {
20+
setupGiscusTerm(iframe)
21+
// Add theme toggle event.
22+
const themeToggle = document.getElementById('docsify-darklight-theme')
23+
if (themeToggle) {
24+
themeToggle.addEventListener('click', () => toggleGiscusTheme(themeToggle, iframe))
25+
}
26+
}
27+
})
28+
}
29+
30+
const setupGiscusTerm = (iframe) => {
31+
// Replace `term` parameter in iframe src.
32+
const src = iframe.getAttribute('src')
33+
let term = decodeURIComponent(location.hash).replace('#', '')
34+
if (!term) term = '/'
35+
const newSrc = src.replace(/term=[^&]*/, `term=${encodeURIComponent(term)}`)
36+
iframe.setAttribute('src', newSrc)
1637
}
1738

18-
const toggleGiscusTheme = (toggle) => {
19-
const iframe = document.querySelector('.giscus-frame')
20-
if (iframe) {
21-
// Check if dark mode is enabled.
22-
const isDark = toggle.getAttribute('data-link-title') === 'dark'
23-
const theme = isDark ? 'dark_dimmed' : 'light'
24-
// Replace `theme` parameter in iframe src.
25-
const src = iframe.getAttribute('src')
26-
const newSrc = src.replace(
27-
/theme=[^&]*/,
28-
`theme=${theme}`
29-
)
30-
iframe.setAttribute('src', newSrc)
31-
}
39+
const toggleGiscusTheme = (toggle, iframe) => {
40+
// Check if dark mode is enabled.
41+
const isDark = toggle.getAttribute('data-link-title') === 'dark'
42+
const theme = isDark ? 'dark_dimmed' : 'light'
43+
// Replace `theme` parameter in iframe src.
44+
const src = iframe.getAttribute('src')
45+
const newSrc = src.replace(/theme=[^&]*/, `theme=${theme}`)
46+
iframe.setAttribute('src', newSrc)
3247
}
3348

3449
$docsify.plugins.push(giscusPlugin)

docs/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDkxMjQ2MDE="
6868
data-category="Announcements"
6969
data-category-id="DIC_kwDOEmzd-c4Cx2Sr"
70-
data-mapping="title"
7170
data-strict="0"
7271
data-reactions-enabled="1"
7372
data-emit-metadata="0"

0 commit comments

Comments
 (0)