mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 13:51:13 -05:00
Refactor: Complete type safety migration
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user