({
authToken,
fields,
logger = defaultLogger,
apiClient: providedApiClient,
}: FetchUserDetailsParams<T>)
| 32 | * Fetches specific user details from the /api/v1/me endpoint |
| 33 | */ |
| 34 | export async function fetchUserDetails<T extends UserField>({ |
| 35 | authToken, |
| 36 | fields, |
| 37 | logger = defaultLogger, |
| 38 | apiClient: providedApiClient, |
| 39 | }: FetchUserDetailsParams<T>): Promise<UserDetails<T> | null> { |
| 40 | let apiClient: CodebuffApiClient |
| 41 | if (providedApiClient) { |
| 42 | apiClient = providedApiClient |
| 43 | } else { |
| 44 | setApiClientAuthToken(authToken) |
| 45 | apiClient = getApiClient() |
| 46 | } |
| 47 | |
| 48 | const response = await apiClient.me(fields) |
| 49 | |
| 50 | if (!response.ok) { |
| 51 | logger.error( |
| 52 | { status: response.status, fields }, |
| 53 | 'Failed to fetch user details from /api/v1/me', |
| 54 | ) |
| 55 | throw new Error(`Failed to fetch user details (HTTP ${response.status})`) |
| 56 | } |
| 57 | |
| 58 | return response.data ?? null |
| 59 | } |
| 60 | |
| 61 | export interface UseUserDetailsQueryDeps<T extends UserField> { |
| 62 | fields: readonly T[] |
no test coverage detected