dynamic change utterances theme with coder theme (#676)

* dynamic change utterances theme with coder theme

* add myself into CONTRIBUTORS.md
This commit is contained in:
Zhan Shuo
2022-05-30 02:38:59 +08:00
committed by GitHub
parent 40eeed8256
commit 9ea82c5c82
3 changed files with 63 additions and 8 deletions

View File

@@ -108,3 +108,4 @@
- [Xiaoyang Luo](https://github.com/ccviolett/)
- [Michiel Appelman](https://appelman.se)
- [Mark Wood](https://digitalnotions.net)
- [zzsqwq](https://zzsqwq.cn)

View File

@@ -34,6 +34,48 @@ function setTheme(theme) {
body.classList.remove('colorscheme-' + inverse);
body.classList.add('colorscheme-' + theme);
document.documentElement.style['color-scheme'] = theme;
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
if (theme === 'dark') {
const message = {
type: 'set-theme',
theme: 'github-dark'
};
waitForElm('.utterances-frame').then((iframe) => {
iframe.contentWindow.postMessage(message, 'https://utteranc.es');
})
}
else {
const message = {
type: 'set-theme',
theme: 'github-light'
};
waitForElm('.utterances-frame').then((iframe) => {
iframe.contentWindow.postMessage(message, 'https://utteranc.es');
})
}
}
function rememberTheme(theme) {

View File

@@ -1,12 +1,24 @@
{{- if isset .Site.Params "utterances" -}}
{{- if and (isset .Site.Params.utterances "repo") (not (eq .Site.Params.utterances.repo "" )) (eq (.Params.disableComments | default false) false) -}}
<script src="https://utteranc.es/client.js"
repo= "{{ .Site.Params.utterances.repo }}"
issue-term="{{ default "title" .Site.Params.utterances.issueTerm }}"
{{ if isset .Site.Params.utterances "label" }}label="{{ .Site.Params.utterances.label }}"{{ end }}
theme="{{ default "github-light" .Site.Params.utterances.theme }}"
crossorigin="anonymous"
async>
<div class="comments">
<script>
let getTheme = window.localStorage && window.localStorage.getItem("colorscheme");
getTheme = getTheme == null ? '{{$.Site.Params.utterances.theme}}' : getTheme;
let theme = getTheme === 'dark' ? 'github-dark' : 'github-light';
let s = document.createElement('script');
s.src = 'https://utteranc.es/client.js';
s.setAttribute('repo', '{{ .Site.Params.utterances.repo }}');
s.setAttribute('issue-term', '{{ default "title" .Site.Params.utterances.issueTerm }}');
s.setAttribute('theme', theme);
s.setAttribute('crossorigin', 'anonymous');
s.setAttribute('async', '');
document.querySelector('div.comments').innerHTML = '';
document.querySelector('div.comments').appendChild(s);
</script>
</div>
{{- end -}}
{{- end -}}