feat: navigation and UX improvements complete

This commit is contained in:
Eric Gullickson
2025-12-26 09:25:42 -06:00
parent 50baec390f
commit 8c13dc0a55
23 changed files with 327 additions and 126 deletions

View File

@@ -37,6 +37,7 @@ export class UserPreferencesController {
unitSystem: preferences.unitSystem,
currencyCode: preferences.currencyCode,
timeZone: preferences.timeZone,
darkMode: preferences.darkMode,
createdAt: preferences.createdAt,
updatedAt: preferences.updatedAt,
});
@@ -55,7 +56,7 @@ export class UserPreferencesController {
) {
try {
const userId = (request as any).user.sub;
const { unitSystem, currencyCode, timeZone } = request.body;
const { unitSystem, currencyCode, timeZone, darkMode } = request.body;
// Validate unitSystem if provided
if (unitSystem && !['imperial', 'metric'].includes(unitSystem)) {
@@ -73,6 +74,14 @@ export class UserPreferencesController {
});
}
// Validate darkMode if provided (must be boolean or null)
if (darkMode !== undefined && darkMode !== null && typeof darkMode !== 'boolean') {
return reply.code(400).send({
error: 'Bad Request',
message: 'darkMode must be a boolean or null',
});
}
// Check if preferences exist, create if not
let preferences = await this.repository.findByUserId(userId);
if (!preferences) {
@@ -81,12 +90,14 @@ export class UserPreferencesController {
unitSystem: unitSystem || 'imperial',
currencyCode: currencyCode || 'USD',
timeZone: timeZone || 'UTC',
darkMode: darkMode,
});
} else {
const updated = await this.repository.update(userId, {
unitSystem,
currencyCode,
timeZone,
darkMode,
});
if (updated) {
preferences = updated;
@@ -99,6 +110,7 @@ export class UserPreferencesController {
unitSystem: preferences.unitSystem,
currencyCode: preferences.currencyCode,
timeZone: preferences.timeZone,
darkMode: preferences.darkMode,
createdAt: preferences.createdAt,
updatedAt: preferences.updatedAt,
});