diff --git a/src/service/feature/auth/api/authAPI.ts b/src/service/feature/auth/api/authApi.ts similarity index 90% rename from src/service/feature/auth/api/authAPI.ts rename to src/service/feature/auth/api/authApi.ts index 8ee649e..aa52c96 100644 --- a/src/service/feature/auth/api/authAPI.ts +++ b/src/service/feature/auth/api/authApi.ts @@ -1,21 +1,21 @@ -import createAxiosInstance from '@service/feature/common/axios/axiosInstance.ts'; -import { - LoginRequest, - LoginResponse, - RegisterRequest, - RegisterResponse, -} from '@service/feature/auth/types/auth.ts'; - -const axios = createAxiosInstance('members'); - -export const login = async (data: LoginRequest): Promise => { - const response = await axios.post('/sign-in', data); - return response.data.data; -}; - -export const register = async ( - data: RegisterRequest, -): Promise => { - const response = await axios.post('/sign-up', data); - return response.data; -}; +import createAxiosInstance from '@service/feature/common/axios/axiosInstance.ts'; +import { + LoginRequest, + LoginResponse, + RegisterRequest, + RegisterResponse, +} from '@service/feature/auth/types/auth.ts'; + +const axios = createAxiosInstance(); + +export const login = async (data: LoginRequest): Promise => { + const response = await axios.post('/sign-in', data); + return response.data.data; +}; + +export const register = async ( + data: RegisterRequest, +): Promise => { + const response = await axios.post('/sign-up', data); + return response.data; +}; diff --git a/src/service/feature/auth/api/profileAPI.ts b/src/service/feature/auth/api/profileApi.ts similarity index 97% rename from src/service/feature/auth/api/profileAPI.ts rename to src/service/feature/auth/api/profileApi.ts index 125d4ee..41be268 100644 --- a/src/service/feature/auth/api/profileAPI.ts +++ b/src/service/feature/auth/api/profileApi.ts @@ -1,10 +1,10 @@ -import createAxiosInstance from '@service/feature/common/axios/axiosInstance.ts'; -import { UserProfile } from '@service/feature/auth/types/profile.ts'; -import { ApiResponse } from '@service/feature/common/axios/apiType.ts'; - -const axios = createAxiosInstance('members'); - -export const getProfile = async (): Promise => { - const response = await axios.get>('/members'); - return response.data.data; -}; +import createAxiosInstance from '@service/feature/common/axios/axiosInstance.ts'; +import { UserProfile } from '@service/feature/auth/types/profile.ts'; +import { ApiResponse } from '@service/feature/common/axios/apiType.ts'; + +const axios = createAxiosInstance('members'); + +export const getProfile = async (): Promise => { + const response = await axios.get>('/members'); + return response.data.data; +}; diff --git a/src/service/feature/auth/types/auth.ts b/src/service/feature/auth/types/auth.ts index 992d694..e69de29 100644 --- a/src/service/feature/auth/types/auth.ts +++ b/src/service/feature/auth/types/auth.ts @@ -1,23 +0,0 @@ -export interface LoginRequest { - email: string; - password: string; -} - -export interface LoginResponse { - id: string; - name: string; - type: 'MEMBER' | 'ADMIN' | string; - token: string; -} - -export interface RegisterRequest { - email: string; - password: string; - nickname: string; -} - -export interface RegisterResponse { - userId: string; - email: string; - nickname: string; -} diff --git a/src/service/feature/auth/types/profile.ts b/src/service/feature/auth/types/profile.ts index 82de607..e69de29 100644 --- a/src/service/feature/auth/types/profile.ts +++ b/src/service/feature/auth/types/profile.ts @@ -1,13 +0,0 @@ -export type MemberState = 'ONLINE' | 'OFFLINE' | 'IDLE' | 'DO_NOT_DISTURB'; - -export interface UserProfile { - id: string; - email: string; - nickname: string; - name: string; - birth: string; - type: 'MEMBER' | 'ADMIN' | string; - avatarUrl: string | null; - state: MemberState; - createdAt: string; -} \ No newline at end of file diff --git a/src/service/feature/common/axios/apiType.ts b/src/service/feature/common/axios/apiType.ts index ddc11ac..e69de29 100644 --- a/src/service/feature/common/axios/apiType.ts +++ b/src/service/feature/common/axios/apiType.ts @@ -1,5 +0,0 @@ -export interface ApiResponse { - status: number; - message: string | null; - data: T; -} \ No newline at end of file diff --git a/src/service/feature/common/axios/axiosInstance.ts b/src/service/feature/common/axios/axiosInstance.ts index 89dde4e..e69de29 100644 --- a/src/service/feature/common/axios/axiosInstance.ts +++ b/src/service/feature/common/axios/axiosInstance.ts @@ -1,73 +0,0 @@ -import axios, { AxiosInstance, AxiosError, AxiosResponse } from 'axios'; -import { toast } from 'sonner'; -import { ERROR_MESSAGES } from '../../../lib/const/toast/errorMessage'; -import { getCookie } from '../../auth/lib/getCookie'; - -export type ServiceType = 'members' | 'teams' | 'dialog'; - -const API_CONFIG = { - BASE_DOMAIN: 'https://flowchat.shop:30200', - HEADERS: { - JSON: 'application/json', - }, -} as const; - -interface ErrorResponse { - message: string; -} - -const handleAxiosError = (error: AxiosError) => { - const { response } = error; - if (!response) { - toast.error('네트워크 오류 또는 서버 응답 없음'); - return Promise.reject(error); - } - - const errorMessages: Record = { - 401: ERROR_MESSAGES.UNAUTHORIZED, - 403: ERROR_MESSAGES.FORBIDDEN, - 500: ERROR_MESSAGES.SERVER_ERROR, - }; - - toast.error( - errorMessages[response.status] || - (response.data && response.data.message) || - ERROR_MESSAGES.DEFAULT_ERROR, - ); - - if (response.status === 401) { - // TODO: logout 처리 또는 /login 리디렉션 - } - - return Promise.reject(error); -}; - -export const createAxiosInstance = (): AxiosInstance => { - const instance = axios.create({ - baseURL: API_CONFIG.BASE_DOMAIN, - headers: { - 'Content-Type': API_CONFIG.HEADERS.JSON, - }, - withCredentials: true, - }); - - instance.interceptors.request.use( - (config) => { - const token = getCookie('accessToken'); - if (token) { - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - (error) => Promise.reject(error) - ); - - instance.interceptors.response.use( - (response: AxiosResponse) => response, - handleAxiosError - ); - - return instance; -}; - -export default createAxiosInstance; \ No newline at end of file diff --git a/src/view/pages/chat/components/message/MentionText.tsx b/src/view/pages/chat/components/message/MentionText.tsx new file mode 100644 index 0000000..e69de29