All files / src/services/api userApi.ts

100% Statements 7/7
100% Branches 4/4
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43                                          26x 17x   17x 4x               26x     6x       5x    
/**
 * User API Service
 * Story 1.17: Type-safe API client wrappers for user endpoints
 *
 * Endpoints:
 * - GET /api/v1/users/me?include=roles,preferences
 * - PUT /api/v1/users/me/preferences
 */
 
import apiClient from './apiClient';
import {
  UserProfileResponse,
  UpdatePreferencesRequest,
  UpdatePreferencesResponse,
} from '@/types/user';
 
/**
 * Fetch authenticated user profile with optional includes
 * @param includes - Optional fields to include (e.g., ['roles', 'preferences'])
 * @returns User profile data
 */
export const getUserProfile = async (includes?: string[]): Promise<UserProfileResponse> => {
  const params = includes && includes.length > 0 ? { include: includes.join(',') } : {};
 
  const response = await apiClient.get<UserProfileResponse>('/users/me', { params });
  return response.data;
};
 
/**
 * Update user preferences (partial update supported)
 * @param preferences - Preferences to update
 * @returns Updated preferences
 */
export const updateUserPreferences = async (
  preferences: UpdatePreferencesRequest
): Promise<UpdatePreferencesResponse> => {
  const response = await apiClient.put<UpdatePreferencesResponse>(
    '/users/me/preferences',
    preferences
  );
  return response.data;
};