set meta theme color correctly
This commit is contained in:
parent
6183a9787a
commit
d627348d19
|
@ -7,12 +7,21 @@ const notifyOffline = debounce(() => {
|
||||||
toast.say('You seem to be offline. You can still read toots while offline.')
|
toast.say('You seem to be offline. You can still read toots while offline.')
|
||||||
}, OFFLINE_DELAY)
|
}, OFFLINE_DELAY)
|
||||||
|
|
||||||
|
let oldTheme
|
||||||
|
let meta = process.browser && document.querySelector('meta[name="theme-color"]')
|
||||||
|
|
||||||
const observe = online => {
|
const observe = online => {
|
||||||
if (!localStorage.store_currentInstance) {
|
if (!localStorage.store_currentInstance) {
|
||||||
return // only show notification for logged-in users
|
return // only show notification for logged-in users
|
||||||
}
|
}
|
||||||
document.body.classList.toggle('offline', !online)
|
document.body.classList.toggle('offline', !online)
|
||||||
if (!online) {
|
if (online) {
|
||||||
|
meta.content = oldTheme || window.__themeColors['default']
|
||||||
|
} else {
|
||||||
|
let offlineThemeColor = window.__themeColors.offline
|
||||||
|
if (meta.content !== offlineThemeColor)
|
||||||
|
oldTheme = meta.content
|
||||||
|
meta.content = offlineThemeColor
|
||||||
notifyOffline()
|
notifyOffline()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
import { loadCSS } from 'fg-loadcss';
|
import { loadCSS } from 'fg-loadcss';
|
||||||
|
|
||||||
|
let meta = process.browser && document.querySelector('meta[name="theme-color"]')
|
||||||
|
|
||||||
export function switchToTheme(themeName) {
|
export function switchToTheme(themeName) {
|
||||||
let CL = document.body.classList
|
let clazzList = document.body.classList
|
||||||
for (let i = 0; i < CL.length; i++) {
|
for (let i = 0; i < clazzList.length; i++) {
|
||||||
let clazz = CL.item(i)
|
let clazz = clazzList.item(i)
|
||||||
if (clazz.startsWith('theme-')) {
|
if (clazz.startsWith('theme-')) {
|
||||||
CL.remove(clazz)
|
clazzList.remove(clazz)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let themeColor = window.__themeColors[themeName]
|
||||||
|
meta.content = themeColor || window.__themeColors['default']
|
||||||
if (themeName !== 'default') {
|
if (themeName !== 'default') {
|
||||||
CL.add(`theme-${themeName}`)
|
clazzList.add(`theme-${themeName}`)
|
||||||
loadCSS(`/theme-${themeName}.css`)
|
loadCSS(`/theme-${themeName}.css`)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
$main-theme-color: darken(#41e041, 32%);
|
$main-theme-color: #126c12;
|
||||||
$body-bg-color: lighten($main-theme-color, 70%);
|
$body-bg-color: lighten($main-theme-color, 70%);
|
||||||
$anchor-color: $main-theme-color;
|
$anchor-color: $main-theme-color;
|
||||||
$main-text-color: #333;
|
$main-text-color: #333;
|
||||||
|
|
|
@ -36,6 +36,16 @@ body.offline,body.theme-hotpants.offline,body.theme-majesty.offline,body.theme-o
|
||||||
<body>
|
<body>
|
||||||
<script>
|
<script>
|
||||||
<!-- load theme on startup (handled outside of Sapper/Svelte) -->
|
<!-- load theme on startup (handled outside of Sapper/Svelte) -->
|
||||||
|
window.__themeColors = {
|
||||||
|
'default': "royalblue",
|
||||||
|
scarlet: "#e04e41",
|
||||||
|
seafoam: "teal",
|
||||||
|
hotpants: "hotpink",
|
||||||
|
oaken: "saddlebrown",
|
||||||
|
majesty: "blueviolet",
|
||||||
|
gecko: "#126c12",
|
||||||
|
offline: "#999999"
|
||||||
|
}
|
||||||
if (localStorage.store_currentInstance && localStorage.store_instanceThemes) {
|
if (localStorage.store_currentInstance && localStorage.store_instanceThemes) {
|
||||||
let theme = JSON.parse(localStorage.store_instanceThemes)[JSON.parse(localStorage.store_currentInstance)]
|
let theme = JSON.parse(localStorage.store_instanceThemes)[JSON.parse(localStorage.store_currentInstance)]
|
||||||
if (theme !== 'default') {
|
if (theme !== 'default') {
|
||||||
|
@ -44,6 +54,9 @@ body.offline,body.theme-hotpants.offline,body.theme-majesty.offline,body.theme-o
|
||||||
link.rel = 'stylesheet'
|
link.rel = 'stylesheet'
|
||||||
link.href = `/theme-${theme}.css`
|
link.href = `/theme-${theme}.css`
|
||||||
document.head.appendChild(link)
|
document.head.appendChild(link)
|
||||||
|
if (window.__themeColors[theme]) {
|
||||||
|
document.querySelector('meta[name="theme-color"]').content = window.__themeColors[theme]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in a new issue