fix: theme persistence

save user theme preferences  in session instead of localStorage
This commit is contained in:
Sonny
2024-05-13 23:58:08 +02:00
committed by Sonny
parent f0e64c19fd
commit 243984ca66
7 changed files with 35 additions and 13 deletions

1
app/constants/session.ts Normal file
View File

@@ -0,0 +1 @@
export const PREFER_DARK_THEME = 'prefer_dark_theme';

View File

@@ -1,7 +1,17 @@
import { PREFER_DARK_THEME } from '#constants/session';
import { updateUserThemeValidator } from '#validators/user_theme';
import type { HttpContext } from '@adonisjs/core/http';
export default class AppsController {
index({ inertia }: HttpContext) {
return inertia.render('home');
}
async updateUserTheme({ request, session, response }: HttpContext) {
const { preferDarkTheme } = await request.validateUsing(
updateUserThemeValidator
);
session.put(PREFER_DARK_THEME, preferDarkTheme);
return response.ok('ok');
}
}

View File

@@ -0,0 +1,7 @@
import vine from '@vinejs/vine';
export const updateUserThemeValidator = vine.compile(
vine.object({
preferDarkTheme: vine.boolean(),
})
);