You've already forked AstralRinth
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);
|
|
}
|
|
});
|
|
});
|