39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
export default defineNitroPlugin((nitroApp) => {
|
|
nitroApp.hooks.hook('render:html', (html, { event }) => {
|
|
try {
|
|
const cookies = parseCookies(event)
|
|
|
|
if (cookies && cookies['color-mode']) {
|
|
const theme = JSON.parse(cookies['color-mode'])
|
|
|
|
html.htmlAttrs.push(`class="${theme.value}-mode"`)
|
|
} else {
|
|
html.htmlAttrs.push(`class="dark-mode"`)
|
|
}
|
|
|
|
// Reset cookie attributes to correct ones
|
|
if (cookies) {
|
|
const opts = {
|
|
maxAge: 60 * 60 * 24 * 365 * 10,
|
|
sameSite: 'lax',
|
|
secure: true,
|
|
httpOnly: false,
|
|
path: '/',
|
|
}
|
|
|
|
if (cookies['auth-token']) {
|
|
setCookie(event, 'auth-token', cookies['auth-token'], opts)
|
|
}
|
|
if (cookies['color-mode']) {
|
|
setCookie(event, 'color-mode', cookies['color-mode'], opts)
|
|
}
|
|
if (cookies.cosmetics) {
|
|
setCookie(event, 'cosmetics', cookies.cosmetics, opts)
|
|
}
|
|
}
|
|
} catch (err) {
|
|
console.error(err)
|
|
}
|
|
})
|
|
})
|