Refactor: Complete type safety migration

This commit is contained in:
gpt-engineer-app[bot]
2025-10-17 13:22:39 +00:00
parent 3d61d738f2
commit efc33a7dda
10 changed files with 212 additions and 161 deletions

View File

@@ -3,6 +3,17 @@ import { useAuth } from '@/hooks/useAuth';
import { supabase } from '@/integrations/supabase/client';
import { logger } from '@/lib/logger';
import { UnitPreferences, getMeasurementSystemFromCountry } from '@/lib/units';
import type { Json } from '@/integrations/supabase/types';
// Type guard for unit preferences
function isValidUnitPreferences(obj: unknown): obj is UnitPreferences {
return (
typeof obj === 'object' &&
obj !== null &&
'measurement_system' in obj &&
['metric', 'imperial'].includes((obj as any).measurement_system)
);
}
const DEFAULT_PREFERENCES: UnitPreferences = {
measurement_system: 'metric',
@@ -38,8 +49,9 @@ export function useUnitPreferences() {
throw error;
}
if (data?.unit_preferences && typeof data.unit_preferences === 'object') {
setPreferences({ ...DEFAULT_PREFERENCES, ...(data.unit_preferences as unknown as UnitPreferences) });
if (data?.unit_preferences && isValidUnitPreferences(data.unit_preferences)) {
const validPrefs = data.unit_preferences as UnitPreferences;
setPreferences({ ...DEFAULT_PREFERENCES, ...validPrefs });
} else {
await autoDetectPreferences();
}
@@ -85,7 +97,7 @@ export function useUnitPreferences() {
.from('user_preferences')
.upsert({
user_id: user.id,
unit_preferences: newPreferences as any,
unit_preferences: newPreferences as unknown as Json,
updated_at: new Date().toISOString()
});
@@ -124,7 +136,7 @@ export function useUnitPreferences() {
await supabase
.from('user_preferences')
.update({
unit_preferences: updated as any,
unit_preferences: updated as unknown as Json,
updated_at: new Date().toISOString()
})
.eq('user_id', user.id);