import apiClient from './client'; export interface UserPreferences { notifications?: boolean; emailUpdates?: boolean; darkMode?: boolean; } export interface UpdateProfileData { name?: string; photoUrl?: string; timezone?: string; preferences?: UserPreferences; } export interface UserProfile { id: string; email: string; name: string; photoUrl?: string; role: string; locale: string; emailVerified: boolean; preferences?: UserPreferences; families?: string[]; onboardingCompleted?: boolean; onboardingStep?: number; onboardingData?: OnboardingData; } export interface OnboardingData { selectedLanguage?: string; selectedMeasurement?: 'metric' | 'imperial'; familyChoice?: 'create' | 'join'; childData?: { name?: string; birthDate?: string; gender?: string; }; } export interface OnboardingStatus { completed: boolean; step: number; data: OnboardingData; } export const usersApi = { // Update user profile updateProfile: async (data: UpdateProfileData): Promise => { const response = await apiClient.patch('/api/v1/auth/profile', data); return response.data.data; }, // Get onboarding status getOnboardingStatus: async (): Promise => { const response = await apiClient.get('/api/v1/preferences/onboarding'); return response.data.data; }, // Update onboarding progress updateOnboardingProgress: async (data: { step: number; data?: OnboardingData }): Promise => { const response = await apiClient.put('/api/v1/preferences/onboarding/progress', data); return response.data.data.user; }, // Mark onboarding as complete completeOnboarding: async (): Promise => { const response = await apiClient.post('/api/v1/preferences/onboarding/complete'); return response.data.data.user; }, };