/
lizardking
/
react_project
Обзор
Документация
Войти
/
lizardking
/
react_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/features/auth/api/authApi.ts
51 строка
1 KB
LizardKing
Task 6 - Router
17 окт 2025, 22:40
17 окт 2025, 22:40
476a0e6
Код
Авторство
О чём код?
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' import type { User } from 'entities/user' const STORAGE_TOKEN_KEY = 'rl_token' type LoginResponse = { accessToken?: string }; export const authApi = createApi({ reducerPath: 'authApi', baseQuery: fetchBaseQuery({ baseUrl: 'https://api.v2.react-learning.ru', prepareHeaders: (headers) => { try { const token = localStorage.getItem(STORAGE_TOKEN_KEY) if (token) headers.set('Authorization', token) } catch { /* ignore */ } return headers }, }), tagTypes: ['User'], endpoints: (build) => ({ login: build.mutation<string, { email: string; password: string }>({ query: (body) => ({ url: '/auth/login', method: 'POST', body, headers: { 'Content-Type': 'application/json' }, }), transformResponse: (response: LoginResponse) => { const token = response.accessToken if (!token) throw new Error('Token not found in response') return token }, }), getMe: build.query<User, void>({ query: () => ({ url: '/users/me' }), providesTags: ['User'], transformResponse: (raw: Record<string, unknown>) => ({ id: String(raw.id ?? ''), name: String(raw.name ?? ''), email: String(raw.email ?? ''), }), }), }), }) export const { useLoginMutation, useLazyGetMeQuery } = authApi export { STORAGE_TOKEN_KEY }