From 511fbe927941eab5e4533c38f9c50f587e76a75e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 02:24:43 +0900
Subject: [PATCH 01/22] Update rankingList page
---
.../src/PageContainer/RankingPage/index.tsx | 23 +++++++++++--------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/projects/client/src/PageContainer/RankingPage/index.tsx b/projects/client/src/PageContainer/RankingPage/index.tsx
index f4a59bdf..28c4091b 100644
--- a/projects/client/src/PageContainer/RankingPage/index.tsx
+++ b/projects/client/src/PageContainer/RankingPage/index.tsx
@@ -1,17 +1,22 @@
'use client';
+import * as S from './style';
+
import { RankingList } from 'common';
import { RankingHeader } from 'client/components';
-import * as S from './style';
-const RankingPage = () => (
-
-
- {/* */}
-
-
-
-);
+import { useGetStudentInfo } from 'api/client';
+
+const RankingPage = () => {
+ const { data } = useGetStudentInfo();
+
+ return (
+
+ {data && }
+
+
+ );
+};
export default RankingPage;
From 92805faddf3772748a564f1bf03834f20c5a7486 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 02:32:33 +0900
Subject: [PATCH 02/22] Update ternary operator processing
---
projects/client/src/components/RankingHeader/index.tsx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/projects/client/src/components/RankingHeader/index.tsx b/projects/client/src/components/RankingHeader/index.tsx
index e7f1a6c9..f4a9969e 100644
--- a/projects/client/src/components/RankingHeader/index.tsx
+++ b/projects/client/src/components/RankingHeader/index.tsx
@@ -24,7 +24,11 @@ const RankingHeader: React.FC = ({
return (
-
+
현재 {ranking}위
From 8889adcac3bb459f76d1132fa9ccff071d02cbc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 02:33:58 +0900
Subject: [PATCH 03/22] Update user content wrapper style
---
projects/client/src/components/RankingHeader/style.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/projects/client/src/components/RankingHeader/style.ts b/projects/client/src/components/RankingHeader/style.ts
index 5635dc66..ca46b7a2 100644
--- a/projects/client/src/components/RankingHeader/style.ts
+++ b/projects/client/src/components/RankingHeader/style.ts
@@ -37,6 +37,7 @@ export const ProfileImageWrapper = styled.div`
export const UserContentWrapper = styled.div`
display: flex;
+ width: 350px;
`;
export const UserRank = styled.div`
From cb1a6b82022dfcfd924af7c5e56a0690f9d9f938 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:15:37 +0900
Subject: [PATCH 04/22] Update unit change px -> rem
---
packages/api/client/src/hooks/student/usePostUploadProfile.ts | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 packages/api/client/src/hooks/student/usePostUploadProfile.ts
diff --git a/packages/api/client/src/hooks/student/usePostUploadProfile.ts b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
new file mode 100644
index 00000000..e69de29b
From 3b7be115272ca9f0aa5840946bc7510caaa73cd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:42:04 +0900
Subject: [PATCH 05/22] Update usePostUploadProfile logic
---
.../src/hooks/student/usePostUploadProfile.ts | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/packages/api/client/src/hooks/student/usePostUploadProfile.ts b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
index e69de29b..346ca198 100644
--- a/packages/api/client/src/hooks/student/usePostUploadProfile.ts
+++ b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
@@ -0,0 +1,16 @@
+import { useMutation } from '@tanstack/react-query';
+
+import { post, uploadQueryKey, uploadUrl } from 'api/common';
+
+import { UploadProfileType } from 'types';
+
+import type { UseMutationOptions } from '@tanstack/react-query';
+
+export const usePostUploadProfile = (
+ options?: UseMutationOptions
+) =>
+ useMutation(
+ uploadQueryKey.postUploadProfile(),
+ (uploadProfile) => post(uploadUrl.uploadProfile(), uploadProfile),
+ options
+ );
From 7cb167409cfbd18ac3661c9fb40a75a683455003 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:42:33 +0900
Subject: [PATCH 06/22] Update upload profile querykey appoint
---
packages/api/common/src/libs/queryKeys.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/packages/api/common/src/libs/queryKeys.ts b/packages/api/common/src/libs/queryKeys.ts
index 641526d6..65c56b0a 100644
--- a/packages/api/common/src/libs/queryKeys.ts
+++ b/packages/api/common/src/libs/queryKeys.ts
@@ -33,3 +33,7 @@ export const orderQueryKeys = {
getOrderedItemList: () => ['order', 'list'],
patchOrderStatus: (orderId: string) => ['order', 'status', orderId],
};
+
+export const uploadQueryKey = {
+ postUploadProfile: () => ['upload', 'profile'],
+};
From 305cd0881a441c0e6da834305481d11b72e6712d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:42:56 +0900
Subject: [PATCH 07/22] Update upload profile url appoint
---
packages/api/common/src/libs/urlController.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/packages/api/common/src/libs/urlController.ts b/packages/api/common/src/libs/urlController.ts
index a7cbc56a..98ff88af 100644
--- a/packages/api/common/src/libs/urlController.ts
+++ b/packages/api/common/src/libs/urlController.ts
@@ -29,3 +29,7 @@ export const itemUrl = {
export const orderUrl = {
orderItem: () => `/order`,
};
+
+export const uploadUrl = {
+ uploadProfile: () => `/image`,
+};
From 13aa8d62702aa5bd16e63f5f1403750c38c3a433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:43:09 +0900
Subject: [PATCH 08/22] Add export uploadProfile
---
packages/types/src/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts
index acf6e6b9..dbc53d39 100644
--- a/packages/types/src/index.ts
+++ b/packages/types/src/index.ts
@@ -8,4 +8,4 @@ export * from './scoringListType';
export * from './solveStatusType';
export * from './missionDetail';
export * from './studentType';
-
+export * from './uploadProfile';
From 8a5df496fc7e6cac89ba46b2bf67cc3534416938 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:43:36 +0900
Subject: [PATCH 09/22] Add uploadProfileType appoint
---
packages/types/src/uploadProfile.ts | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 packages/types/src/uploadProfile.ts
diff --git a/packages/types/src/uploadProfile.ts b/packages/types/src/uploadProfile.ts
new file mode 100644
index 00000000..87c4ebf3
--- /dev/null
+++ b/packages/types/src/uploadProfile.ts
@@ -0,0 +1,3 @@
+export interface UploadProfileType {
+ image: 'Multipart';
+}
From 556d1b3d06fbb65fa32801d8fe15bef681fdff39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:43:51 +0900
Subject: [PATCH 10/22] Upadate unit change px -> rem
---
projects/client/src/components/RankingHeader/style.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/client/src/components/RankingHeader/style.ts b/projects/client/src/components/RankingHeader/style.ts
index ca46b7a2..92781c8e 100644
--- a/projects/client/src/components/RankingHeader/style.ts
+++ b/projects/client/src/components/RankingHeader/style.ts
@@ -37,7 +37,7 @@ export const ProfileImageWrapper = styled.div`
export const UserContentWrapper = styled.div`
display: flex;
- width: 350px;
+ width: 21.875rem;
`;
export const UserRank = styled.div`
From 464244cf49f4316d9c6b8e788b36bef213310f15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 15:47:42 +0900
Subject: [PATCH 11/22] Add export usePostUploadProfile
---
packages/api/client/src/hooks/student/index.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/api/client/src/hooks/student/index.ts b/packages/api/client/src/hooks/student/index.ts
index a2db717b..a0c48562 100644
--- a/packages/api/client/src/hooks/student/index.ts
+++ b/packages/api/client/src/hooks/student/index.ts
@@ -1 +1,2 @@
export * from './useGetStudentInfo';
+export * from './usePostUploadProfile';
From 8ea6849226f2802188057ff33146c7121f5286c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 17:54:13 +0900
Subject: [PATCH 12/22] Update ProfileImageWrapper style change
---
projects/client/src/components/RankingHeader/style.ts | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/projects/client/src/components/RankingHeader/style.ts b/projects/client/src/components/RankingHeader/style.ts
index 92781c8e..e145ad6c 100644
--- a/projects/client/src/components/RankingHeader/style.ts
+++ b/projects/client/src/components/RankingHeader/style.ts
@@ -13,7 +13,7 @@ export const ProfileImageWrapper = styled.div`
height: 7.5rem;
overflow: hidden;
position: relative;
- right: 0.5rem;
+ right: 1.3rem;
border-radius: 6.25rem;
background-color: rgba(143, 143, 143, 1);
@@ -37,7 +37,7 @@ export const ProfileImageWrapper = styled.div`
export const UserContentWrapper = styled.div`
display: flex;
- width: 21.875rem;
+ width: 16.875rem;
`;
export const UserRank = styled.div`
@@ -45,6 +45,7 @@ export const UserRank = styled.div`
${({ theme }) => theme.typo.button};
padding-right: 0.625rem;
`;
+
export const UserName = styled.div`
color: ${({ theme }) => theme.color.black};
${({ theme }) => theme.typo.button};
From f6acf7dcab41af566cae4b3d5c9e47707fe2bf41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Sun, 1 Oct 2023 19:30:52 +0900
Subject: [PATCH 13/22] Add uploadProfile type fileName
---
packages/types/src/uploadProfile.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/types/src/uploadProfile.ts b/packages/types/src/uploadProfile.ts
index 87c4ebf3..aa573875 100644
--- a/packages/types/src/uploadProfile.ts
+++ b/packages/types/src/uploadProfile.ts
@@ -1,3 +1,4 @@
export interface UploadProfileType {
image: 'Multipart';
+ fileName: string;
}
From b629ba4fa531427cbc6246a8bf97d8f31e3d35ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=EB=9E=91?=
<106226701+TaerangLee@users.noreply.github.com>
Date: Mon, 2 Oct 2023 12:06:55 +0900
Subject: [PATCH 14/22] Update image upload logic
---
.../src/components/RankingHeader/index.tsx | 57 +++++++++++++++----
1 file changed, 47 insertions(+), 10 deletions(-)
diff --git a/projects/client/src/components/RankingHeader/index.tsx b/projects/client/src/components/RankingHeader/index.tsx
index f4a9969e..c3fa8d3e 100644
--- a/projects/client/src/components/RankingHeader/index.tsx
+++ b/projects/client/src/components/RankingHeader/index.tsx
@@ -1,17 +1,14 @@
-'use client';
-
-import * as S from './style';
-
+import React, { useRef } from 'react';
+import Image from 'next/image';
+import { usePostUploadProfile } from 'api/client';
import DefaultProfile from 'common/assets/svg/DefaultProfile.svg';
-import { slicePoint } from 'common';
-
+import * as S from './style';
import { RankingPropsType } from 'types';
-
-import Image from 'next/image';
+import { slicePoint } from 'common';
interface RankingHeaderProps {
- data: RankingPropsType;
ranking: number;
+ data: RankingPropsType;
}
const RankingHeader: React.FC = ({
@@ -21,10 +18,50 @@ const RankingHeader: React.FC = ({
user: { name, profileImage },
},
}) => {
+ const { mutate } = usePostUploadProfile();
+ const fileInputRef = useRef(null);
+
+ const handleImageChange = async (e: React.ChangeEvent) => {
+ const file = e.target.files && e.target.files[0];
+ if (file) {
+ try {
+ uploadImageToServer(file);
+ alert('이미지 업로드가 완료되었습니다.');
+ } catch (error) {
+ console.error('Error uploading image:', error);
+ alert('이미지 업로드에 실패했습니다.');
+ }
+ }
+ };
+
+ const uploadImageToServer = async (image: File) => {
+ console.log(image);
+ const formData = new FormData();
+ formData.append('image', image);
+
+ try {
+ mutate((data) => {
+ console.log('asdasdasd');
+ return { ...data, image: formData };
+ });
+ } catch (error) {
+ alert('실패');
+ console.error('Error uploading image:', error);
+ }
+ };
+
return (
-
+ fileInputRef.current?.click()}>
+
Date: Mon, 2 Oct 2023 12:07:12 +0900
Subject: [PATCH 15/22] Update my ranking data
---
.../src/PageContainer/RankingPage/index.tsx | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/projects/client/src/PageContainer/RankingPage/index.tsx b/projects/client/src/PageContainer/RankingPage/index.tsx
index 28c4091b..cdf85a14 100644
--- a/projects/client/src/PageContainer/RankingPage/index.tsx
+++ b/projects/client/src/PageContainer/RankingPage/index.tsx
@@ -7,13 +7,24 @@ import { RankingList } from 'common';
import { RankingHeader } from 'client/components';
import { useGetStudentInfo } from 'api/client';
+import { useGetRankingList } from 'api/common';
const RankingPage = () => {
- const { data } = useGetStudentInfo();
+ const { data: studentInfo } = useGetStudentInfo();
+ const { data: rankingList } = useGetRankingList();
+
+ if (!studentInfo || !rankingList) {
+ return null;
+ }
+
+ const userRanking =
+ rankingList.findIndex((item) => item.id === studentInfo.user.id) + 2;
return (
- {data && }
+ {studentInfo && (
+
+ )}
);
From 2fc49fe7bd27eb9df3dad823c826c985f99e86e8 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:16:18 +0900
Subject: [PATCH 16/22] Update findIndex
---
projects/client/src/PageContainer/RankingPage/index.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/client/src/PageContainer/RankingPage/index.tsx b/projects/client/src/PageContainer/RankingPage/index.tsx
index cdf85a14..190369fd 100644
--- a/projects/client/src/PageContainer/RankingPage/index.tsx
+++ b/projects/client/src/PageContainer/RankingPage/index.tsx
@@ -18,7 +18,7 @@ const RankingPage = () => {
}
const userRanking =
- rankingList.findIndex((item) => item.id === studentInfo.user.id) + 2;
+ rankingList.findIndex((item) => item.id === studentInfo.id) + 1;
return (
From 5645a4614656a2a4d4a993c341a2c0e6dfb33908 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:16:26 +0900
Subject: [PATCH 17/22] Update libs
---
packages/api/common/src/libs/queryKeys.ts | 5 +----
packages/api/common/src/libs/urlController.ts | 5 +----
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/packages/api/common/src/libs/queryKeys.ts b/packages/api/common/src/libs/queryKeys.ts
index 65c56b0a..5e6231db 100644
--- a/packages/api/common/src/libs/queryKeys.ts
+++ b/packages/api/common/src/libs/queryKeys.ts
@@ -7,6 +7,7 @@ export const missionQueryKeys = {
export const studentQueryKeys = {
getRankingList: () => ['student', 'rankingList'],
getStudentInfo: () => ['student', 'info'],
+ postUploadProfile: () => ['upload', 'profile'],
};
export const authQueryKeys = {
@@ -33,7 +34,3 @@ export const orderQueryKeys = {
getOrderedItemList: () => ['order', 'list'],
patchOrderStatus: (orderId: string) => ['order', 'status', orderId],
};
-
-export const uploadQueryKey = {
- postUploadProfile: () => ['upload', 'profile'],
-};
diff --git a/packages/api/common/src/libs/urlController.ts b/packages/api/common/src/libs/urlController.ts
index 98ff88af..78a83be8 100644
--- a/packages/api/common/src/libs/urlController.ts
+++ b/packages/api/common/src/libs/urlController.ts
@@ -6,6 +6,7 @@ export const missionUrl = {
export const studentUrl = {
rankingList: () => `/student/ranking`,
studentInfo: () => `/student/my`,
+ uploadProfile: () => `/image`,
};
export const authUrl = {
@@ -29,7 +30,3 @@ export const itemUrl = {
export const orderUrl = {
orderItem: () => `/order`,
};
-
-export const uploadUrl = {
- uploadProfile: () => `/image`,
-};
From 8a7047f80e462261fd83d12adf000e6649d8a293 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:16:48 +0900
Subject: [PATCH 18/22] Update usePostUploadProfile
---
.../src/hooks/student/usePostUploadProfile.ts | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/packages/api/client/src/hooks/student/usePostUploadProfile.ts b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
index 346ca198..5cd7452f 100644
--- a/packages/api/client/src/hooks/student/usePostUploadProfile.ts
+++ b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
@@ -1,16 +1,9 @@
import { useMutation } from '@tanstack/react-query';
-import { post, uploadQueryKey, uploadUrl } from 'api/common';
+import { post, studentQueryKeys, studentUrl } from 'api/common';
-import { UploadProfileType } from 'types';
-
-import type { UseMutationOptions } from '@tanstack/react-query';
-
-export const usePostUploadProfile = (
- options?: UseMutationOptions
-) =>
- useMutation(
- uploadQueryKey.postUploadProfile(),
- (uploadProfile) => post(uploadUrl.uploadProfile(), uploadProfile),
- options
+export const usePostUploadProfile = () =>
+ useMutation(
+ studentQueryKeys.postUploadProfile(),
+ (uploadProfile) => post(studentUrl.uploadProfile(), uploadProfile)
);
From d29911c0bae716e851db802117515049a45ac530 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:17:01 +0900
Subject: [PATCH 19/22] Update request type
---
packages/types/src/uploadProfile.ts | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/packages/types/src/uploadProfile.ts b/packages/types/src/uploadProfile.ts
index aa573875..16356fa4 100644
--- a/packages/types/src/uploadProfile.ts
+++ b/packages/types/src/uploadProfile.ts
@@ -1,4 +1,3 @@
export interface UploadProfileType {
- image: 'Multipart';
- fileName: string;
+ image: FormData;
}
From 2362e8c20c85c4fab9ae90686f9d2e25a329b732 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:17:10 +0900
Subject: [PATCH 20/22] Update mutate
---
projects/client/src/components/RankingHeader/index.tsx | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/projects/client/src/components/RankingHeader/index.tsx b/projects/client/src/components/RankingHeader/index.tsx
index c3fa8d3e..40976d37 100644
--- a/projects/client/src/components/RankingHeader/index.tsx
+++ b/projects/client/src/components/RankingHeader/index.tsx
@@ -39,15 +39,7 @@ const RankingHeader: React.FC = ({
const formData = new FormData();
formData.append('image', image);
- try {
- mutate((data) => {
- console.log('asdasdasd');
- return { ...data, image: formData };
- });
- } catch (error) {
- alert('실패');
- console.error('Error uploading image:', error);
- }
+ mutate({ image: formData });
};
return (
From d6a4d94ec6928c7c52c879855c760bc11564e996 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 12:36:06 +0900
Subject: [PATCH 21/22] Update formData
---
.../src/hooks/student/usePostUploadProfile.ts | 9 +++++---
packages/api/common/src/libs/urlController.ts | 2 +-
.../src/components/RankingHeader/index.tsx | 21 ++++---------------
3 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/packages/api/client/src/hooks/student/usePostUploadProfile.ts b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
index 5cd7452f..1a6c3df9 100644
--- a/packages/api/client/src/hooks/student/usePostUploadProfile.ts
+++ b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
@@ -3,7 +3,10 @@ import { useMutation } from '@tanstack/react-query';
import { post, studentQueryKeys, studentUrl } from 'api/common';
export const usePostUploadProfile = () =>
- useMutation(
- studentQueryKeys.postUploadProfile(),
- (uploadProfile) => post(studentUrl.uploadProfile(), uploadProfile)
+ useMutation(studentQueryKeys.postUploadProfile(), (uploadProfile: FormData) =>
+ post(studentUrl.uploadProfile(), uploadProfile, {
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ })
);
diff --git a/packages/api/common/src/libs/urlController.ts b/packages/api/common/src/libs/urlController.ts
index 78a83be8..0c16a0de 100644
--- a/packages/api/common/src/libs/urlController.ts
+++ b/packages/api/common/src/libs/urlController.ts
@@ -6,7 +6,7 @@ export const missionUrl = {
export const studentUrl = {
rankingList: () => `/student/ranking`,
studentInfo: () => `/student/my`,
- uploadProfile: () => `/image`,
+ uploadProfile: () => `/student/image`,
};
export const authUrl = {
diff --git a/projects/client/src/components/RankingHeader/index.tsx b/projects/client/src/components/RankingHeader/index.tsx
index 40976d37..46f2cf98 100644
--- a/projects/client/src/components/RankingHeader/index.tsx
+++ b/projects/client/src/components/RankingHeader/index.tsx
@@ -22,26 +22,13 @@ const RankingHeader: React.FC = ({
const fileInputRef = useRef(null);
const handleImageChange = async (e: React.ChangeEvent) => {
- const file = e.target.files && e.target.files[0];
- if (file) {
- try {
- uploadImageToServer(file);
- alert('이미지 업로드가 완료되었습니다.');
- } catch (error) {
- console.error('Error uploading image:', error);
- alert('이미지 업로드에 실패했습니다.');
- }
+ if (e.target.files) {
+ const formData = new FormData();
+ formData.append('file', e.target.files[0], e.target.files[0].name);
+ mutate(formData);
}
};
- const uploadImageToServer = async (image: File) => {
- console.log(image);
- const formData = new FormData();
- formData.append('image', image);
-
- mutate({ image: formData });
- };
-
return (
fileInputRef.current?.click()}>
From 3b7bb10f4ed07e56be477b48021749362c6dc536 Mon Sep 17 00:00:00 2001
From: Lee-Seungje
Date: Mon, 2 Oct 2023 17:22:11 +0900
Subject: [PATCH 22/22] Update mutate
---
.../src/hooks/student/usePostUploadProfile.ts | 14 +++++++------
projects/client/next.config.js | 3 +++
.../src/components/RankingHeader/index.tsx | 21 +++++++++++++++++--
3 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/packages/api/client/src/hooks/student/usePostUploadProfile.ts b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
index 1a6c3df9..9d8c2ecb 100644
--- a/packages/api/client/src/hooks/student/usePostUploadProfile.ts
+++ b/packages/api/client/src/hooks/student/usePostUploadProfile.ts
@@ -3,10 +3,12 @@ import { useMutation } from '@tanstack/react-query';
import { post, studentQueryKeys, studentUrl } from 'api/common';
export const usePostUploadProfile = () =>
- useMutation(studentQueryKeys.postUploadProfile(), (uploadProfile: FormData) =>
- post(studentUrl.uploadProfile(), uploadProfile, {
- headers: {
- 'Content-Type': 'multipart/form-data',
- },
- })
+ useMutation<{ imageName: string }, Error, { image: FormData }>(
+ studentQueryKeys.postUploadProfile(),
+ (uploadProfile) =>
+ post(studentUrl.uploadProfile(), uploadProfile, {
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ })
);
diff --git a/projects/client/next.config.js b/projects/client/next.config.js
index 0599f4d9..bbd7bab5 100644
--- a/projects/client/next.config.js
+++ b/projects/client/next.config.js
@@ -10,6 +10,9 @@ const nextConfig = {
destination: `${process.env.NEXT_PUBLIC_API_URL}/:path*`,
},
],
+ images: {
+ domains: ['https://stack-knowledge.s3.ap-northeast-2.amazonaws.com'],
+ },
};
module.exports = nextConfig;
diff --git a/projects/client/src/components/RankingHeader/index.tsx b/projects/client/src/components/RankingHeader/index.tsx
index 46f2cf98..64cf1417 100644
--- a/projects/client/src/components/RankingHeader/index.tsx
+++ b/projects/client/src/components/RankingHeader/index.tsx
@@ -18,17 +18,34 @@ const RankingHeader: React.FC = ({
user: { name, profileImage },
},
}) => {
- const { mutate } = usePostUploadProfile();
+ const { mutate, isSuccess } = usePostUploadProfile();
const fileInputRef = useRef(null);
const handleImageChange = async (e: React.ChangeEvent) => {
if (e.target.files) {
const formData = new FormData();
formData.append('file', e.target.files[0], e.target.files[0].name);
- mutate(formData);
+ mutate({ image: formData });
+ // for (let value of formData.values()) {
+ // console.log(value);
+ // }
+ // await fetch('/api/student/image', {
+ // method: 'POST',
+ // headers: {
+ // 'Content-Type': 'multipart/form-data',
+ // },
+ // body: {
+ // image: formData,
+ // },
+ // })
+ // .then((res) => res.json())
+ // .then((data) => console.log(data));
}
};
+ if (isSuccess) {
+ }
+
return (
fileInputRef.current?.click()}>