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)
}
})
})