diff --git a/src/App.tsx b/src/App.tsx index 2c9daa4..132b137 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,24 +1,24 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom'; -import { CalendarPage, ExtraCalendarPage } from '@pages/calendar'; -import { LoginPage, LoginCompletePage } from '@pages/login'; -import { ManagementPage, ExtraManagementPage } from '@pages/management'; -import { MemoPage, ExtraMemoPage } from '@pages/memo'; -import { MyPage, ExtraMyPage } from '@pages/mypage'; -import { SharePage, ExtraSharePage } from '@pages/share'; -import { TodoListPage, ExtraTodoListPage } from '@pages/todo-list'; +import { CalendarPage, ExtraCalendarPage } from '@/pages/calendar'; +import { LoginPage, LoginCompletePage } from '@/pages/login'; +import { ManagementPage, ExtraManagementPage } from '@/pages/management'; +import { MemoPage, ExtraMemoPage } from '@/pages/memo'; +import { MyPage, ExtraMyPage } from '@/pages/mypage'; +import { SharePage, ExtraSharePage } from '@/pages/share'; +import { TodoListPage, ExtraTodoListPage } from '@/pages/todo-list'; import { CreateTeamPage, JoinTeamPage, TeamPage, ShareTeamPage -} from '@pages/team'; -import ErrorPage from '@pages/error'; -import { ProfilePage } from '@pages/mypage/profile'; -import { PortfolioPage } from '@pages/mypage/portfolio'; -import MainPage from '@pages/main/main'; -import Layout from '@components/Layout'; -import { SignupPage } from '@pages/signup/signup'; -import { RequireAuth } from '@hooks/useRequireAuth'; +} from '@/pages/team'; +import ErrorPage from '@/pages/error'; +import { ProfilePage } from '@/pages/mypage/profile'; +import { PortfolioPage } from '@/pages/mypage/portfolio'; +import MainPage from '@/pages/main/main'; +import Layout from '@/components/Layout'; +import { SignupPage } from '@/pages/signup/signup'; +import { RequireAuth } from '@/hooks/useRequireAuth'; const App = () => { return ( diff --git a/src/apis/alarm/getAlarmList.ts b/src/apis/alarm/getAlarmList.ts deleted file mode 100644 index ea01aba..0000000 --- a/src/apis/alarm/getAlarmList.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; - -export const getAlarm = async (teamId: number | null) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.get(`/api/alarm/${teamId}`, { - withCredentials: true, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}` - } - }); - return response.data; - } catch (error) { - throw new Error(error.response?.data?.message); - } -}; diff --git a/src/apis/alarm/updatePassword.ts b/src/apis/alarm/updatePassword.ts deleted file mode 100644 index 1fb7f5d..0000000 --- a/src/apis/alarm/updatePassword.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; - -export const updateAlarmStatus = async (alarmId: number) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.patch(`/api/alarm/${alarmId}`, { - withCredentials: true, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}` - } - }); - return response.data; - } catch (error) { - return { error }; - } -}; diff --git a/src/apis/calendar.ts b/src/apis/calendar.ts index 01ef74e..582ef78 100644 --- a/src/apis/calendar.ts +++ b/src/apis/calendar.ts @@ -1,53 +1,59 @@ import { AxiosInstance } from '@/apis/new/axios-instance'; import { CreateEventProps, UpdateEventProps } from 'src/types/calendar'; +import { calendarApiUrl, calendarApiUrlWithTeamId } from './new/urls'; -export const getTeamMember = async (teamId: number) => { - const response = await AxiosInstance.get(`/api/team/${teamId}/member`); - return response; -}; - +// 캘린더 생성 export const createCalendarEvent = async ( teamId: number, event: CreateEventProps ) => { - const response = await AxiosInstance.post(`/api/team/${teamId}/calendar`, event); - return response; + await AxiosInstance.post(calendarApiUrlWithTeamId(teamId), event); }; -export const updateCalendarEvent = async ( - eventId: number, - data: UpdateEventProps +// 팀 캘린더 조회 +export const getCalendarEventList = async ( + teamId: number, + month: number | null ) => { - const response = await AxiosInstance.patch(`/api/calendar/${eventId}`, data); + const response = await AxiosInstance.get( + `${calendarApiUrlWithTeamId(teamId)}?month=${month}` + ); return response; }; -export const updateEventState = async (eventId: number) => { - const response = await AxiosInstance.patch(`/api/calendar/${eventId}/state`); +// 다가오는 캘린더 조회 +export const getUpcomingEvent = async (teamId: number) => { + const response = await AxiosInstance.get( + `${calendarApiUrlWithTeamId(teamId)}/coming` + ); return response; }; -export const deleteCalendarEvent = async (eventId: number) => { - const response = await AxiosInstance.delete(`/api/calendar/${eventId}`); +// 캘린더 상세 조회 +export const getCalendarEventDetail = async (calendarId: number) => { + const response = await AxiosInstance.get(calendarApiUrl(calendarId)); return response; }; -export const getCalendarEventList = async ( - teamId: number, - month: number | null +// 캘린더 수정 +export const updateCalendarEvent = async ( + calendarId: number, + data: UpdateEventProps ) => { - const response = await AxiosInstance.get( - `/api/team/${teamId}/calendar?month=${month}` - ); + const response = await AxiosInstance.patch(calendarApiUrl(calendarId), data); return response; }; -export const getCalendarEventDetail = async (calendarId: number) => { - const response = await AxiosInstance.get(`/api/calendar/${calendarId}`); +// 캘린더 상태 수정 +export const updateEventState = async (calendarId: number) => { + const response = await AxiosInstance.patch( + `${calendarApiUrl(calendarId)}/state` + ); return response; }; -export const getUpcomingEvent = async (teamId: number) => { - const response = await AxiosInstance.get(`/api/team/${teamId}/calendar/coming`); +// 캘린더 삭제 +export const deleteCalendarEvent = async (calendarId: number) => { + const response = await AxiosInstance.delete(calendarApiUrl(calendarId)); return response; }; diff --git a/src/apis/login/google-login.ts b/src/apis/login/google-login.ts deleted file mode 100644 index 12a75c0..0000000 --- a/src/apis/login/google-login.ts +++ /dev/null @@ -1,32 +0,0 @@ -import axios from 'axios'; - -export const googleLogin = async (code) => { - try { - const tokenResponse = await axios.post( - `https://oauth2.googleapis.com/token`, - { - code, - client_id: import.meta.env.VITE_GOOGLE_CLIENT_ID, - client_secret: import.meta.env.VITE_GOOGLE_CLIENT_SECRET, - redirect_uri: import.meta.env.VITE_GOOGLE_REDIRECT_URI, - grant_type: 'authorization_code' - } - ); - - const accessToken = tokenResponse.data.access_token; - - const userInfoResponse = await axios.get( - 'https://www.googleapis.com/oauth2/v2/userinfo', - { - headers: { - Authorization: `Bearer ${accessToken}` - } - } - ); - - return userInfoResponse.data; - } catch (error) { - console.error('Google login error:', error); - throw error; - } -}; diff --git a/src/apis/login/kakao-login.ts b/src/apis/login/kakao-login.ts deleted file mode 100644 index 533ccc7..0000000 --- a/src/apis/login/kakao-login.ts +++ /dev/null @@ -1,25 +0,0 @@ -import axios from 'axios'; - -export const kakaoLogin = async (code) => { - try { - const tokenResponse = await axios.post( - `https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=${import.meta.env.VITE_KAKAO_REST_API_KEY}&redirect_uri=${import.meta.env.VITE_KAKAO_REDIRECT_URI}&code=${code}&client_secret=${import.meta.env.VITE_KAKAO_CLIENT_SECRET}` - ); - - const accessToken = tokenResponse.data.access_token; - - const userInfoResponse = await axios.get( - 'https://kapi.kakao.com/v2/user/me', - { - headers: { - Authorization: `Bearer ${accessToken}` - } - } - ); - - return userInfoResponse.data; - } catch (error) { - console.error('Kakao login error:', error); - throw error; - } -}; diff --git a/src/apis/login/naver-login.ts b/src/apis/login/naver-login.ts deleted file mode 100644 index b9e9cf5..0000000 --- a/src/apis/login/naver-login.ts +++ /dev/null @@ -1,25 +0,0 @@ -import axios from 'axios'; - -export const naverLogin = async (code, state) => { - try { - const tokenResponse = await axios.post( - `https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=${import.meta.env.NAVER_CLIENT_ID}&client_secret=${import.meta.env.VITE_NAVER_CLIENT_SECRET}&code=${code}&state=${state}` - ); - - const accessToken = tokenResponse.data.access_token; - - const userInfoResponse = await axios.get( - 'https://openapi.naver.com/v1/nid/me', - { - headers: { - Authorization: `Bearer ${accessToken}` - } - } - ); - - return userInfoResponse.data; - } catch (error) { - console.error('Naver login error:', error); - throw error; - } -}; diff --git a/src/apis/login/postTerms.ts b/src/apis/login/postTerms.ts deleted file mode 100644 index d9dfb25..0000000 --- a/src/apis/login/postTerms.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { TermProps } from 'src/types/term'; - -export const postTerms = async ({ termsOfUse, privacyPolicy }: TermProps) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.post( - `/api/terms`, - { termsOfUse, privacyPolicy }, - { - withCredentials: true, - headers: { - Accept: 'application/json', - Authorization: `Bearer ${token}` - } - } - ); - return response; - } catch (error) { - return error.response.data; - } -}; diff --git a/src/apis/management.ts b/src/apis/management.ts index 9797bed..e8bd4b9 100644 --- a/src/apis/management.ts +++ b/src/apis/management.ts @@ -1,22 +1,6 @@ import { AxiosInstance } from '@/apis/new/axios-instance.ts'; import { ScheduleRequestBody, TeamData } from '../types/management.ts'; -// 내 팀 조회 -export const getMyTeam = async () => { - const token = localStorage.getItem('teamId'); - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.get(`/api/member/team`); - return response.data.result.teamList; - } catch (error) { - console.error(error); - throw error; - } -}; - // 팀 조회 export const getTeamData = async (teamId: number): Promise => { try { @@ -31,7 +15,9 @@ export const getTeamData = async (teamId: number): Promise => { // 팀 멤버 조회 (역할태그 포함) export const getMembers = async (teamId: number) => { try { - const response = await AxiosInstance.get(`/api/team/${teamId}/member/detail`); + const response = await AxiosInstance.get( + `/api/team/${teamId}/member/detail` + ); return response.data.result.teamMember; } catch (error) { console.error(error); @@ -59,11 +45,15 @@ export const updateProfile = async ( formData.append('imageFile', imageFile); } - const response = await AxiosInstance.patch(`/api/team/${teamId}`, formData, { - headers: { - 'Content-Type': 'multipart/form-data' + const response = await AxiosInstance.patch( + `/api/team/${teamId}`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data' + } } - }); + ); console.log(response.data); return response.data; @@ -80,9 +70,12 @@ export const updateTag = async ( name: string ) => { try { - const response = await AxiosInstance.patch(`/api/team/${teamId}/tag/${tagId}`, { - name: name - }); + const response = await AxiosInstance.patch( + `/api/team/${teamId}/tag/${tagId}`, + { + name: name + } + ); console.log(response.data); return response.data; } catch (error) { @@ -94,9 +87,12 @@ export const updateTag = async ( // 역할 태그 생성 export const createRoleTag = async (teamManageId: number, name: string) => { try { - const response = await AxiosInstance.post(`/api/management/${teamManageId}/role`, { - name: name - }); + const response = await AxiosInstance.post( + `/api/management/${teamManageId}/role`, + { + name: name + } + ); console.log(response.data); return response.data; } catch (error) { diff --git a/src/apis/memo.ts b/src/apis/memo.ts deleted file mode 100644 index 4f0d48e..0000000 --- a/src/apis/memo.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance.ts'; -import { MemoResponse } from '../types/memo.ts'; - -// 메모 조회 -export const getMemos = async (teamId: number): Promise => { - const response = await AxiosInstance.get(`/api/team/${teamId}/memo`); - return response.data; -}; - -// 메모 생성 -export const createMemo = async ( - teamId: number, - title: string, - tagList: string[], - content: string -) => { - try { - const response = await AxiosInstance.post(`/api/team/${teamId}/memo`, { - title: title, - tagList: tagList, - content: content - }); - return response.data; - } catch (err) { - console.log(err); - throw err; - } -}; - -// 메모 개별 조회 -export const getMemoById = async (memoId: number) => { - try { - const response = await AxiosInstance.get(`/api/memo/${memoId}`); - return response.data; - } catch (error) { - console.error(error); - throw error; - } -}; - -// 메모 수정 -export const updateMemo = async ( - memoId: number, - title: string, - tagList: string[], - content: string -) => { - try { - const response = await AxiosInstance.patch(`api/memo/${memoId}`, { - title: title, - tagList: tagList, - content: content - }); - return response.data; - } catch (error) { - console.log(error); - throw error; - } -}; - -// 메모 삭제 -export const deleteMemo = async (memoId: number) => { - try { - await AxiosInstance.delete(`/api/memo/${memoId}`); - console.log('메모 삭제'); - } catch (error) { - console.log(error); - throw error; - } -}; diff --git a/src/apis/mypage.ts b/src/apis/mypage.ts deleted file mode 100644 index 5ce5cee..0000000 --- a/src/apis/mypage.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { ProfileResponse } from 'src/types/profile'; - -// 내 프로필 조회 -export const getProfile = async (): Promise => { - try { - const response = await AxiosInstance.get(`/api/member`); - return response.data; - } catch (error) { - console.error('Failed to fetch profile:', error); - throw error; - } -}; - -//내 프로필 수정 -export const updateProfile = async ( - image: File | null, - name: string, - belong: string, - phoneNumber: string, - confidentRole: string[] -) => { - try { - const formData = new FormData(); - - const profileData = JSON.stringify({ - name, - belong, - phoneNumber, - confidentRole - }); - - formData.append('updateProfile', profileData); - - if (image) { - formData.append('image', image); - } - - const response = await AxiosInstance.patch(`/api/member`, formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }); - - console.log('Profile updated successfully:', response.data); - console.log(profileData); - return response.data; - } catch (err) { - console.error('Failed to update profile:', err); - throw err; - } -}; diff --git a/src/apis/new/axios-instance.ts b/src/apis/new/axios-instance.ts index 63ba8f4..ae547d3 100644 --- a/src/apis/new/axios-instance.ts +++ b/src/apis/new/axios-instance.ts @@ -2,7 +2,10 @@ import axios from 'axios'; export const AxiosInstance = axios.create({ baseURL: import.meta.env.VITE_BASE_URL, + withCredentials: true, headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', Authorization: `Bearer ` + localStorage.getItem('accessToken') } }); diff --git a/src/apis/new/member.ts b/src/apis/new/member.ts index e138c3d..311cb25 100644 --- a/src/apis/new/member.ts +++ b/src/apis/new/member.ts @@ -7,6 +7,7 @@ import { getMyTeamResponse, getMyTodoListResponse } from '@/types/new/response/member'; +import { IUpdateMyProfile } from '@/types/new/common'; // 내 프로필 조회 export const getMyProfile = async (): Promise => { @@ -21,8 +22,31 @@ export const getMyTodoList = async (): Promise => { }; // 내 프로필 수정 -export const updateMyProfile = async (): Promise => { - await AxiosInstance.patch(memberApiUrl); +export const updateMyProfile = async ({ + image, + name, + belong, + phoneNumber, + confidentRole +}: IUpdateMyProfile): Promise => { + const formData = new FormData(); + + const profileData = JSON.stringify({ + name, + belong, + phoneNumber, + confidentRole + }); + + formData.append('updateProfile', profileData); + + if (image) { + formData.append('image', image); + } + + await AxiosInstance.patch(memberApiUrl, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }); }; // 내 프로필 한마디 상태 변경 diff --git a/src/apis/new/memo.ts b/src/apis/new/memo.ts index 3d44bf4..bb31e85 100644 --- a/src/apis/new/memo.ts +++ b/src/apis/new/memo.ts @@ -1,14 +1,23 @@ import { AxiosInstance } from '@/apis/new/axios-instance'; import { memoApiUrl, memoApiUrlWithTeamId } from '@/apis/new/urls'; +import { ICreateMemo, IUpdateMemo } from '@/types/new/common'; import { getMemoDetailResponse, getMemoListResponse } from '@/types/new/response/memo'; // 팀 메모 생성 -export const createMemo = async (teamId: number): Promise => { - const response = await AxiosInstance.post(`${memoApiUrlWithTeamId(teamId)}`); - return response.data; +export const createMemo = async ({ + teamId, + title, + tagList, + content +}: ICreateMemo): Promise => { + await AxiosInstance.post(`${memoApiUrlWithTeamId(teamId)}`, { + title, + tagList, + content + }); }; // 팀 메모 조회 @@ -28,13 +37,20 @@ export const getMemoDetail = async ( }; // 메모 수정 -export const updateMemo = async (memoId: number): Promise => { - const response = await AxiosInstance.patch(memoApiUrl(memoId)); - return response.data; +export const updateMemo = async ({ + memoId, + title, + tagList, + content +}: IUpdateMemo): Promise => { + await AxiosInstance.patch(memoApiUrl(memoId), { + title, + tagList, + content + }); }; // 메모 삭제 export const deleteMemo = async (memoId: number): Promise => { - const response = await AxiosInstance.delete(memoApiUrl(memoId)); - return response.data; + await AxiosInstance.delete(memoApiUrl(memoId)); }; diff --git a/src/apis/new/storage.ts b/src/apis/new/storage.ts index 3d95d68..7414d4d 100644 --- a/src/apis/new/storage.ts +++ b/src/apis/new/storage.ts @@ -3,11 +3,21 @@ import { storageApiUrlWithTeamId, storageApiUrl } from '@/apis/new/urls'; import { getStorageResponse } from '@/types/new/response/storage'; // 팀 자료 생성 -export const createStorage = async (teamId: number): Promise => { - const response = await AxiosInstance.post( - `${storageApiUrlWithTeamId(teamId)}` - ); - return response.data; +export const createStorage = async ( + teamId: number, + title: string, + file: File +): Promise => { + const formData = new FormData(); + formData.append('teamId', teamId.toString()); + formData.append('title', title); + formData.append('file', file); + + await AxiosInstance.post(`${storageApiUrlWithTeamId(teamId)}`, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); }; // 팀 자료 조회 @@ -25,14 +35,10 @@ export const downloadStorage = async ( teamId: number, storageId: number ): Promise => { - const response = await AxiosInstance.get( - `${storageApiUrlWithTeamId(teamId)}/${storageId}` - ); - return response.data; + await AxiosInstance.get(`${storageApiUrlWithTeamId(teamId)}/${storageId}`); }; // 자료 삭제 export const deleteStorage = async (storageId: number): Promise => { - const response = await AxiosInstance.delete(`${storageApiUrl(storageId)}`); - return response.data; + await AxiosInstance.delete(`${storageApiUrl(storageId)}`); }; diff --git a/src/apis/new/team.ts b/src/apis/new/team.ts index 9630471..3419902 100644 --- a/src/apis/new/team.ts +++ b/src/apis/new/team.ts @@ -8,16 +8,34 @@ import { getTeamMemberResponse, getTeamResponse } from '@/types/new/response/team'; +import { ICreateTeam, IUpdateTeam } from '@/types/new/common'; // 팀 생성 -export const createTeam = async (): Promise => { - const response = await AxiosInstance.post(teamApiUrl); +export const createTeam = async ({ + title, + teamTagList, + imageFile +}: ICreateTeam): Promise => { + const formData = new FormData(); + const requestBody = JSON.stringify({ title, teamTagList }); + + formData.append('createTeam', requestBody); + formData.append('imageFile', imageFile); + + const response = await AxiosInstance.post(teamApiUrl, formData); return response.data; }; // 팀 수정 -export const updateTeam = async (teamId: number): Promise => { - const response = await AxiosInstance.patch(`${teamApiUrl}/${teamId}`); +export const updateTeam = async ({ + teamId, + teamCode, + password +}: IUpdateTeam): Promise => { + const response = await AxiosInstance.patch(`${teamApiUrl}/${teamId}`, { + teamCode, + password + }); return response.data; }; @@ -28,9 +46,16 @@ export const joinTeam = async (teamId: number): Promise => { }; // 팀 비밀번호 생성 -export const createTeamPassword = async (teamId: number): Promise => { +export const createTeamPassword = async ({ + teamId, + password +}: { + teamId: number; + password: string; +}): Promise => { const response = await AxiosInstance.patch( - `${teamApiUrl}/${teamId}/password` + `${teamApiUrl}/${teamId}/password`, + { password } ); return response.data; }; @@ -42,8 +67,12 @@ export const getTeam = async (teamId: number): Promise => { }; // 팀 조회 (팀 코드) -export const getTeamByCode = async (): Promise => { - const response = await AxiosInstance.get(teamApiUrl); +export const getTeamByCode = async ( + teamCode: string +): Promise => { + const response = await AxiosInstance.get( + `${teamApiUrl}?teamCode=${teamCode}` + ); return response.data; }; diff --git a/src/apis/new/terms.ts b/src/apis/new/terms.ts index d149905..56597a8 100644 --- a/src/apis/new/terms.ts +++ b/src/apis/new/terms.ts @@ -1,7 +1,14 @@ import { AxiosInstance } from '@/apis/new/axios-instance'; import { termsApiUrl } from '@/apis/new/urls'; +import { ITerms } from '@/types/new/common'; -export const createTerms = async (): Promise => { - const response = await AxiosInstance.post(termsApiUrl); +export const createTerms = async ({ + termsOfUse, + privacyPolicy +}: ITerms): Promise => { + const response = await AxiosInstance.post(termsApiUrl, { + termsOfUse, + privacyPolicy + }); return response.data; }; diff --git a/src/apis/portfolio.ts b/src/apis/portfolio.ts deleted file mode 100644 index 7350bb9..0000000 --- a/src/apis/portfolio.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { PortfolioResponse, DetailedPortfolio } from 'src/types/portfolio'; - -//내 포트폴리오 조회 -export const getSimplePortfolio = async (): Promise => { - try { - const response = await AxiosInstance.get( - `/api/member/portfolio` - ); - console.log(response.data); - return response.data; - } catch (error) { - console.error('포트폴리오 fetch 실패:', error); - throw error; - } -}; - -//내 포트폴리오 상세 조회 -export const getDetailedPortfolio = async ( - teamId: number -): Promise => { - try { - const response = await AxiosInstance.get( - `/api/member/portfolio/${teamId}` - ); - console.log(response.data); - return response.data; - } catch (error) { - console.error('포트폴리오 fetch 실패:', error); - throw error; - } -}; diff --git a/src/apis/share.ts b/src/apis/share.ts index 1a630bf..c6061bb 100644 --- a/src/apis/share.ts +++ b/src/apis/share.ts @@ -1,82 +1,7 @@ import { AxiosInstance } from './new/axios-instance'; -import { - StorageResponse, - FeedbackResponse, - GetFeedback -} from 'src/types/storage'; +import { FeedbackResponse, GetFeedback } from 'src/types/storage'; const teamId = 1; -//팀 자료 조회 -export const getStorageList = async ( - teamId: number -): Promise => { - try { - const response = await AxiosInstance.get( - `/api/team/${teamId}/storage` - ); - console.log('자료조회 중'); - console.log(response.data); - return response.data; - } catch (error) { - console.error('자료조회 fetch 실패:', error); - throw error; - } -}; - -//팀 자료 생성 -export const createStorageItem = async ( - teamId: number, - title: string, - file: File -): Promise => { - try { - const formData = new FormData(); - formData.append('teamId', teamId.toString()); - formData.append('title', title); - formData.append('file', file); - - await AxiosInstance.post(`/api/team/${teamId}/storage`, formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }); - - console.log('자료가 성공적으로 생성되었습니다.'); - } catch (error) { - console.error('자료 생성 실패:', error); - throw error; - } -}; - -//팀 자료 다운로드 -export const getTeamDocuments = async (storageId: number): Promise => { - try { - const response = await AxiosInstance.get( - `/api/team/${teamId}/storage/${storageId}`, - { - responseType: 'blob' - } - ); - - console.log('자료가 성공적으로 다운로드되었습니다.'); - console.log(response.data); - return response.data; - } catch (error) { - console.error('자료 다운로드 실패:', error); - throw error; - } -}; - -//자료 삭제 -export const deleteStorageItem = async (storageId: number) => { - try { - await AxiosInstance.delete(`/api/storage/${storageId}`); - console.log('자료 삭제'); - } catch (error) { - console.log(error); - throw error; - } -}; //자료 피드백 생성 interface CreateFeedbackParams { diff --git a/src/apis/team/getTeamByCode.ts b/src/apis/team/getTeamByCode.ts deleted file mode 100644 index c36ab10..0000000 --- a/src/apis/team/getTeamByCode.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; - -export const getTeamByCode = async (teamCode: string) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - try { - const response = await AxiosInstance.get(`/api/team?teamCode=${teamCode}`, { - withCredentials: true, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}` - } - }); - return response.data; - } catch (error) { - throw new Error(error.response?.data?.message || 'Something went wrong'); - } -}; diff --git a/src/apis/team/getTeamById.ts b/src/apis/team/getTeamById.ts deleted file mode 100644 index 2dd8666..0000000 --- a/src/apis/team/getTeamById.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; - -export const getTeamById = async () => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.get(`/api/member/team`, { - withCredentials: true, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}` - } - }); - return response.data; - } catch (error) { - throw new Error(error.response?.data?.message || 'Something went wrong'); - } -}; diff --git a/src/apis/team/postCreateTeam.ts b/src/apis/team/postCreateTeam.ts deleted file mode 100644 index e98942c..0000000 --- a/src/apis/team/postCreateTeam.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { CreateTeamInput } from 'src/types/team'; - -export const createTeam = async ({ - title, - teamTagList, - imageFile -}: CreateTeamInput) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const formData = new FormData(); - const createTeam = JSON.stringify({ title, teamTagList }); - - formData.append('createTeam', createTeam); - formData.append('imageFile', imageFile); - - const response = await AxiosInstance.post('/api/team', formData, { - withCredentials: true, - headers: { - Accept: 'application/json', - Authorization: `Bearer ${token}` - } - }); - return response.data; - } catch (error) { - return { error }; - } -}; diff --git a/src/apis/team/postValidatePassword.ts b/src/apis/team/postValidatePassword.ts deleted file mode 100644 index e52c85f..0000000 --- a/src/apis/team/postValidatePassword.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { ValidatePasswordResponse } from 'src/types/team'; - -export const postValidatePassword = async ({ - teamId, - teamCode, - password -}: ValidatePasswordResponse) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.post( - `/api/team/${teamId}`, - { teamCode: teamCode, password: password }, - { - withCredentials: true, - headers: { - Accept: 'application/json', - Authorization: `Bearer ${token}` - } - } - ); - return response; - } catch (error) { - return error.response.data; - } -}; diff --git a/src/apis/team/updatePassword.ts b/src/apis/team/updatePassword.ts deleted file mode 100644 index cd68bea..0000000 --- a/src/apis/team/updatePassword.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { AxiosInstance } from '@/apis/new/axios-instance'; -import { UpdateTeamPasswordInput } from 'src/types/team'; - -export const updateTeamPassword = async ({ - teamId, - password -}: UpdateTeamPasswordInput) => { - const token = localStorage.getItem('accessToken'); - - if (!token) { - return null; - } - - try { - const response = await AxiosInstance.patch( - `/api/team/${teamId}/password`, - { - password - }, - { - withCredentials: true, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}` - } - } - ); - return response.data; - } catch (error) { - return { error }; - } -}; diff --git a/src/components/Alarm/alarm.tsx b/src/components/Alarm/alarm.tsx index 6a8296d..cb7c739 100644 --- a/src/components/Alarm/alarm.tsx +++ b/src/components/Alarm/alarm.tsx @@ -1,29 +1,22 @@ import { useState, useEffect } from 'react'; import styled, { keyframes } from 'styled-components'; -import ClosedBtn from '@assets/calendar/closed-btn.svg'; -import Quit from '@assets/alarm/quit.svg'; -import Remind from '@assets/alarm/remind.svg'; -import WakeUp from '@assets/alarm/wake-up.svg'; +import ClosedBtn from '@/assets/calendar/closed-btn.svg'; +import Quit from '@/assets/alarm/quit.svg'; +import Remind from '@/assets/alarm/remind.svg'; +import WakeUp from '@/assets/alarm/wake-up.svg'; import moment from 'moment'; -import { useUpdateAlarmStatus } from '@hooks/alarm/useUpdateAlarmStatus'; -import { getTeamById } from '@apis/team/getTeamById'; +import { useUpdateAlarmStatus } from '@/hooks/alarm/useUpdateAlarmStatus'; import { useQuery } from '@tanstack/react-query'; +import { getMyTeam } from '@/apis/new/member'; +import { IAlarm } from '@/types/new/common'; type AlarmProps = { isAlarmOpen: boolean; toggleAlarm: () => void; setHover: React.Dispatch>; - data: AlarmItemProps; + data: IAlarm; }; -type AlarmItemProps = { - alarmId: number; - alarmType: 'TODO_AWAKE' | 'CALENDAR_REMIND' | 'TEAM_FINISH'; - date: Date; - isRead: boolean; - referenceId: number; -}[]; - interface AlarmLogoProps { type: 'TODO_AWAKE' | 'CALENDAR_REMIND' | 'TEAM_FINISH'; // 허용할 타입 정의 } @@ -44,7 +37,7 @@ const Alarm = ({ isAlarmOpen, toggleAlarm, setHover, data }: AlarmProps) => { const { data: team } = useQuery({ queryKey: ['team'], - queryFn: getTeamById + queryFn: getMyTeam }); const alarmText = (data) => { diff --git a/src/components/Calendar/AddEventModal.tsx b/src/components/Calendar/AddEventModal.tsx index ff355aa..df96ded 100644 --- a/src/components/Calendar/AddEventModal.tsx +++ b/src/components/Calendar/AddEventModal.tsx @@ -5,12 +5,12 @@ import * as Dialog from '@radix-ui/react-dialog'; import moment from 'moment'; import ParticipantsList from './ParticipantsList'; import { AddEventModalProps, ScheduleInfoType } from '../../types/calendar'; -import ClosedBtn from '@assets/calendar/closed-btn.svg'; -import RemoveTagIcon from '@assets/calendar/remove-tag-icon.svg'; -import { createCalendarEvent } from '@apis/calendar'; -import { syncCalendarEvent } from '@utils/calendarUtils'; -import { useCalendarStore } from '@store/calendarStore'; -import { useIdStore } from '@store/idStore'; +import ClosedBtn from '@/assets/calendar/closed-btn.svg'; +import RemoveTagIcon from '@/assets/calendar/remove-tag-icon.svg'; +import { createCalendarEvent } from '@/apis/calendar'; +import { syncCalendarEvent } from '@/utils/calendarUtils'; +import { useCalendarStore } from '@/store/calendarStore'; +import { useIdStore } from '@/store/idStore'; const AddEventModal = ({ selectedDate, open, setOpen }: AddEventModalProps) => { const { teamId, setTeamId } = useIdStore((state) => ({ diff --git a/src/components/Calendar/Event.tsx b/src/components/Calendar/Event.tsx index 2e27ef2..eda6a7c 100644 --- a/src/components/Calendar/Event.tsx +++ b/src/components/Calendar/Event.tsx @@ -1,8 +1,8 @@ import { useEffect, useState } from 'react'; import styled from 'styled-components'; import { EventType } from 'src/types/calendar'; -import CheckedIcon from '@assets/todo-list/checked.svg'; -import { updateEventState } from '@apis/calendar'; +import CheckedIcon from '@/assets/todo-list/checked.svg'; +import { updateEventState } from '@/apis/calendar'; import EventModal from './EventModal'; type EventProp = { diff --git a/src/components/Calendar/EventCalendar.tsx b/src/components/Calendar/EventCalendar.tsx index 68550e8..0cdbc8a 100644 --- a/src/components/Calendar/EventCalendar.tsx +++ b/src/components/Calendar/EventCalendar.tsx @@ -4,14 +4,14 @@ import Calendar from 'react-calendar'; import 'react-calendar/dist/Calendar.css'; import moment from 'moment'; import { EventType, Value } from '../../types/calendar'; -import NextBtn from '@assets/calendar/next-btn.svg'; -import PrevBtn from '@assets/calendar/prev-btn.svg'; -import { useMemberStore } from '@store/memberStore'; -import { useCalendarStore } from '@store/calendarStore'; -import { getTeamMember } from '@apis/calendar'; +import NextBtn from '@/assets/calendar/next-btn.svg'; +import PrevBtn from '@/assets/calendar/prev-btn.svg'; +import { useMemberStore } from '@/store/memberStore'; +import { useCalendarStore } from '@/store/calendarStore'; import EventPopover from './EventPopover'; -import { syncCalendarEvent } from '@utils/calendarUtils'; -import { useIdStore } from '@store/idStore'; +import { syncCalendarEvent } from '@/utils/calendarUtils'; +import { useIdStore } from '@/store/idStore'; +import { getTeamMember } from '@/apis/new/team'; const EventCalendar = () => { const { teamId, setTeamId } = useIdStore((state) => ({ @@ -47,7 +47,7 @@ const EventCalendar = () => { const fetchMember = async () => { const response = await getTeamMember(teamId); - setTeamMember(response.data.result.teamMember); + setTeamMember(response.teamMembers); }; fetchMember(); diff --git a/src/components/Calendar/EventModal.tsx b/src/components/Calendar/EventModal.tsx index 9e32b44..18a6266 100644 --- a/src/components/Calendar/EventModal.tsx +++ b/src/components/Calendar/EventModal.tsx @@ -5,18 +5,18 @@ import * as Dialog from '@radix-ui/react-dialog'; import moment from 'moment'; import ParticipantsList from './ParticipantsList'; import { ScheduleInfoType } from '../../types/calendar'; -import ClosedBtn from '@assets/calendar/closed-btn.svg'; -import RemoveTagIcon from '@assets/calendar/remove-tag-icon.svg'; +import ClosedBtn from '@/assets/calendar/closed-btn.svg'; +import RemoveTagIcon from '@/assets/calendar/remove-tag-icon.svg'; import { deleteCalendarEvent, getCalendarEventDetail, updateCalendarEvent, updateEventState -} from '@apis/calendar'; -import { syncCalendarEvent } from '@utils/calendarUtils'; +} from '@/apis/calendar'; +import { syncCalendarEvent } from '@/utils/calendarUtils'; import { EventProps } from '../../types/calendar'; -import { useCalendarStore } from '@store/calendarStore'; -import { useIdStore } from '@store/idStore'; +import { useCalendarStore } from '@/store/calendarStore'; +import { useIdStore } from '@/store/idStore'; const EventModal = ({ date, diff --git a/src/components/Calendar/EventPopover.tsx b/src/components/Calendar/EventPopover.tsx index 9f7cfdf..754abb5 100644 --- a/src/components/Calendar/EventPopover.tsx +++ b/src/components/Calendar/EventPopover.tsx @@ -3,7 +3,7 @@ import moment from 'moment'; import * as Popover from '@radix-ui/react-popover'; import AddEventModal from './AddEventModal'; import { EventType } from 'src/types/calendar'; -import AddEventButton from '@assets/calendar/add-event-btn.svg'; +import AddEventButton from '@/assets/calendar/add-event-btn.svg'; import { useState } from 'react'; import Event from './Event'; @@ -28,8 +28,8 @@ const EventPopover = ({ date, eventList }: EventPopoverProps) => {

{moment(date).format('YYYY-MM-DD')}

    - {eventList.map((event) => { - return ; + {eventList.map((event, index) => { + return ; })}