From c101118254b88b3b185f1e344a554623f7afdfb3 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:08:38 +0900
Subject: [PATCH 01/11] =?UTF-8?q?refactor=20:=20=EA=B4=80=EB=A6=AC?=
=?UTF-8?q?=EC=9E=90=20mock=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=ED=8C=8C?=
=?UTF-8?q?=EC=9D=BC=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/mock/adminMock.ts | 33 +++++++++++++++++++++++++++++++++
src/mock/browser.ts | 18 +++++++++++-------
src/mock/projectDetail.ts | 8 --------
src/mock/userpage.ts | 16 ----------------
4 files changed, 44 insertions(+), 31 deletions(-)
create mode 100644 src/mock/adminMock.ts
diff --git a/src/mock/adminMock.ts b/src/mock/adminMock.ts
new file mode 100644
index 00000000..ab8da6f6
--- /dev/null
+++ b/src/mock/adminMock.ts
@@ -0,0 +1,33 @@
+import { http, HttpResponse, passthrough } from 'msw';
+import mockReports from './mockReports.json';
+import mockUsers from './mockUsers.json';
+import mockAllUsers from './mockAllUser.json';
+
+export const reportsAll = http.get(
+ `${import.meta.env.VITE_APP_API_BASE_URL}reports`,
+ () => {
+ return HttpResponse.json(mockReports, { status: 200 });
+ }
+);
+
+export const userAllPreview = http.get(
+ `${import.meta.env.VITE_APP_API_BASE_URL}users/preview`,
+ () => {
+ return HttpResponse.json(mockUsers, { status: 200 });
+ }
+);
+
+export const userAll = http.get(
+ `${import.meta.env.VITE_APP_API_BASE_URL}users`,
+ () => {
+ return HttpResponse.json(mockAllUsers, { status: 200 });
+ }
+);
+
+export const passthroughAllGet = http.get(`*`, () => {
+ return passthrough();
+});
+
+export const passthroughAllPost = http.post(`*`, () => {
+ return passthrough();
+});
diff --git a/src/mock/browser.ts b/src/mock/browser.ts
index caac0f09..d0319fd9 100644
--- a/src/mock/browser.ts
+++ b/src/mock/browser.ts
@@ -7,7 +7,7 @@ import {
passNonPass,
passNonPassList,
} from './applicant';
-import { projectDetail, reportsAll } from './projectDetail';
+import { projectDetail } from './projectDetail';
import {
myPageAppliedProjectList,
mypageEditProfile,
@@ -16,12 +16,7 @@ import {
myPageProfile,
myPageSkillTag,
} from './mypage';
-import {
- userAll,
- userAllPreview,
- userPageAppliedProjectList,
- userPageProfile,
-} from './userpage';
+import { userPageAppliedProjectList, userPageProfile } from './userpage';
import { login } from './auth';
import { fetchProjectLists, fetchProjectStatistic } from './projectLists';
import {
@@ -30,6 +25,13 @@ import {
fetchSkillTag,
} from './projectSearchFiltering';
import { createProject } from './createProject.ts';
+import {
+ passthroughAllGet,
+ passthroughAllPost,
+ reportsAll,
+ userAll,
+ userAllPreview,
+} from './adminMock.ts';
export const handlers = [
fetchProjectLists,
@@ -59,6 +61,8 @@ export const handlers = [
reportsAll,
userAll,
userAllPreview,
+ passthroughAllGet,
+ passthroughAllPost,
];
export const worker = setupWorker(...handlers);
diff --git a/src/mock/projectDetail.ts b/src/mock/projectDetail.ts
index bf6c51ea..697d999d 100644
--- a/src/mock/projectDetail.ts
+++ b/src/mock/projectDetail.ts
@@ -1,6 +1,5 @@
import { http, HttpResponse } from 'msw';
import mockPrjectDetail from './mockProjectDetail.json';
-import mockReports from './mockReports.json';
export const projectDetail = http.get(
`${import.meta.env.VITE_APP_API_BASE_URL}project/:projectId`,
@@ -10,10 +9,3 @@ export const projectDetail = http.get(
});
}
);
-
-export const reportsAll = http.get(
- `${import.meta.env.VITE_APP_API_BASE_URL}reports`,
- () => {
- return HttpResponse.json(mockReports, { status: 200 });
- }
-);
diff --git a/src/mock/userpage.ts b/src/mock/userpage.ts
index 94b9d8a9..4ba9916e 100644
--- a/src/mock/userpage.ts
+++ b/src/mock/userpage.ts
@@ -1,8 +1,6 @@
import { http, HttpResponse } from 'msw';
import mockUserpageProfileData from './mockUserpageProfileData.json';
import mockUserpageAppliedProjectListData from './mockUserpageAppliedProjectListData.json';
-import mockUsers from './mockUsers.json';
-import mockAllUsers from './mockAllUser.json';
export const userPageProfile = http.get(
`${import.meta.env.VITE_APP_API_BASE_URL}user/:id`,
@@ -21,17 +19,3 @@ export const userPageAppliedProjectList = http.get(
});
}
);
-
-export const userAllPreview = http.get(
- `${import.meta.env.VITE_APP_API_BASE_URL}users/preview`,
- () => {
- return HttpResponse.json(mockUsers, { status: 200 });
- }
-);
-
-export const userAll = http.get(
- `${import.meta.env.VITE_APP_API_BASE_URL}users`,
- () => {
- return HttpResponse.json(mockAllUsers, { status: 200 });
- }
-);
From 7a078ea8b13129629036015612849b10b6b9be49 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:10:47 +0900
Subject: [PATCH 02/11] =?UTF-8?q?feat=20:=20"=ED=9A=8C=EC=9B=90=20?=
=?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EB=AF=B8=EB=A6=AC=20?=
=?UTF-8?q?=EB=B3=B4=EA=B8=B0"=20API=20=EC=97=B0=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../allUserPreview/AllUserPreview.styled.ts | 6 ++++++
.../allUserPreview/AllUserPreview.tsx | 12 ++++++++----
src/models/auth.ts | 5 +++--
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
index a68e5081..62eeb357 100644
--- a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
+++ b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
@@ -6,6 +6,12 @@ export const Container = styled.div`
flex-direction: column;
`;
+export const SpinnerContainer = styled.div`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+`;
+
export const Wrapper = styled.div`
display: flex;
justify-content: space-between;
diff --git a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.tsx b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.tsx
index 00c91d60..2af5e580 100644
--- a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.tsx
+++ b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.tsx
@@ -3,14 +3,18 @@ import * as S from './AllUserPreview.styled';
import Avatar from '../../../common/avatar/Avatar';
import { ADMIN_ROUTE } from '../../../../constants/routes';
import arrow_right from '../../../../assets/ArrowRight.svg';
-import LoadingSpinner from '../../../common/loadingSpinner/LoadingSpinner';
import { useGetAllUsersPreview } from '../../../../hooks/admin/useGetAllUsersPreview';
+import { Spinner } from '../../../common/loadingSpinner/LoadingSpinner.styled';
const AllUserPreview = () => {
const { allUserData, isLoading, isFetching } = useGetAllUsersPreview();
if (isLoading || isFetching) {
- return ;
+ return (
+
+
+
+ );
}
if (!allUserData || allUserData.length === 0) {
@@ -22,9 +26,9 @@ const AllUserPreview = () => {
{allUserData?.map((user) => (
-
+
- {user.user.nickname}
+ {user.nickname}
{user.email}
diff --git a/src/models/auth.ts b/src/models/auth.ts
index 6069ffad..fe0a23c1 100644
--- a/src/models/auth.ts
+++ b/src/models/auth.ts
@@ -45,9 +45,10 @@ export interface ApiGetAllUsersPreview extends ApiCommonType {
}
export interface AllUserPreview {
id: number;
+ nickname: string;
email: string;
- user: User;
- userState: UserState;
+ profileImg: 'string';
+ // userState: UserState;
createdAt: string;
}
From 28b7ed8e3d0c6ae5685884bed04d595540407dd7 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:35:57 +0900
Subject: [PATCH 03/11] =?UTF-8?q?style=20:=20=EB=A1=9C=EB=94=A9=20?=
=?UTF-8?q?=EC=8A=A4=ED=94=BC=EB=84=88=20=EC=9C=84=EC=B9=98=20=EC=A4=91?=
=?UTF-8?q?=EC=95=99=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../admin/mainCard/MainCard.styled.ts | 16 +++++++++++++---
.../allUserPreview/AllUserPreview.styled.ts | 3 +--
.../inquiresPreview/InquiresPreview.styled.ts | 6 ++++--
.../inquiresPreview/InquiresPreview.tsx | 16 +++++++---------
.../noticePreview/NoticePreview.styled.ts | 7 ++++---
.../noticePreview/NoticePreview.tsx | 9 ++++++---
.../reportsPreview/ReportsPreview.styled.ts | 6 ++++--
.../reportsPreview/ReportsPreview.tsx | 17 ++++++++++-------
8 files changed, 49 insertions(+), 31 deletions(-)
diff --git a/src/components/admin/mainCard/MainCard.styled.ts b/src/components/admin/mainCard/MainCard.styled.ts
index 99bad462..544cd54a 100644
--- a/src/components/admin/mainCard/MainCard.styled.ts
+++ b/src/components/admin/mainCard/MainCard.styled.ts
@@ -32,8 +32,18 @@ export const ShowAllButton = styled.span`
export const ArrowRight = styled.img``;
-export const Line = styled.hr``;
+export const Line = styled.hr`
+ color: ${({ theme }) => theme.color.grey};
+`;
-export const Wrapper = styled.div``;
+export const Wrapper = styled.div`
+ flex: 1;
+ display: flex;
+`;
-export const MainContent = styled.div``;
+export const MainContent = styled.div`
+ display: flex;
+ flex: 1;
+ justify-content: center;
+ align-items: center;
+`;
diff --git a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
index 62eeb357..e1244e06 100644
--- a/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
+++ b/src/components/admin/previewComponent/allUserPreview/AllUserPreview.styled.ts
@@ -2,8 +2,7 @@ import { Link } from 'react-router-dom';
import styled from 'styled-components';
export const Container = styled.div`
- display: flex;
- flex-direction: column;
+ width: 100%;
`;
export const SpinnerContainer = styled.div`
diff --git a/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.styled.ts b/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.styled.ts
index 216304c5..7d0b9775 100644
--- a/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.styled.ts
+++ b/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.styled.ts
@@ -1,11 +1,13 @@
import { Link } from 'react-router-dom';
import styled from 'styled-components';
+import { SpinnerContainer } from '../allUserPreview/AllUserPreview.styled';
export const Container = styled.div`
- display: flex;
- flex-direction: column;
+ width: 100%;
`;
+export const SpinnerWrapper = styled(SpinnerContainer)``;
+
export const Wrapper = styled.div`
display: flex;
justify-content: space-between;
diff --git a/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.tsx b/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.tsx
index 3b4968b4..57cea21c 100644
--- a/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.tsx
+++ b/src/components/admin/previewComponent/inquiresPreview/InquiresPreview.tsx
@@ -3,28 +3,26 @@ import { useGetAllInquiries } from '../../../../hooks/admin/useGetAllInquiries';
import Avatar from '../../../common/avatar/Avatar';
import { ADMIN_ROUTE } from '../../../../constants/routes';
import arrow_right from '../../../../assets/ArrowRight.svg';
-import LoadingSpinner from '../../../common/loadingSpinner/LoadingSpinner';
+import Spinner from '../../../user/mypage/Spinner';
const InquiresPreview = () => {
const { allInquiriesData, isLoading, isFetching } = useGetAllInquiries();
if (isLoading || isFetching) {
- return ;
+ return (
+
+
+
+ );
}
if (!allInquiriesData || allInquiriesData.length === 0) {
return 등록된 문의가 없습니다.;
}
- const previewList = allInquiriesData
- ? allInquiriesData.length > 6
- ? allInquiriesData.slice(0, 4)
- : allInquiriesData
- : [];
-
return (
- {previewList?.map((inquiry) => (
+ {allInquiriesData?.map((inquiry) => (
{/* {
const { noticeData, isLoading, isFetching } = useGetNotice({
@@ -11,7 +10,11 @@ const NoticePreview = () => {
});
if (isLoading || isFetching) {
- return ;
+ return (
+
+
+
+ );
}
if (!noticeData?.notices || noticeData.notices.length === 0) {
diff --git a/src/components/admin/previewComponent/reportsPreview/ReportsPreview.styled.ts b/src/components/admin/previewComponent/reportsPreview/ReportsPreview.styled.ts
index 5ae6b91a..1fa6d3d6 100644
--- a/src/components/admin/previewComponent/reportsPreview/ReportsPreview.styled.ts
+++ b/src/components/admin/previewComponent/reportsPreview/ReportsPreview.styled.ts
@@ -1,11 +1,13 @@
import { Link } from 'react-router-dom';
import styled from 'styled-components';
+import { SpinnerContainer } from '../allUserPreview/AllUserPreview.styled';
export const Container = styled.div`
- display: flex;
- flex-direction: column;
+ width: 100%;
`;
+export const SpinnerWrapper = styled(SpinnerContainer)``;
+
export const Wrapper = styled.div`
display: flex;
justify-content: space-between;
diff --git a/src/components/admin/previewComponent/reportsPreview/ReportsPreview.tsx b/src/components/admin/previewComponent/reportsPreview/ReportsPreview.tsx
index 794d952d..eda68d8d 100644
--- a/src/components/admin/previewComponent/reportsPreview/ReportsPreview.tsx
+++ b/src/components/admin/previewComponent/reportsPreview/ReportsPreview.tsx
@@ -3,19 +3,22 @@ import { useGetAllReports } from '../../../../hooks/admin/useGetAllReports';
import Avatar from '../../../common/avatar/Avatar';
import arrow_right from '../../../../assets/ArrowRight.svg';
import { ADMIN_ROUTE } from '../../../../constants/routes';
+import { Spinner } from '../../../common/loadingSpinner/LoadingSpinner.styled';
const ReportsPreview = () => {
- const { allReportsData } = useGetAllReports();
+ const { allReportsData, isLoading, isFetching } = useGetAllReports();
- const previewList = allReportsData
- ? allReportsData.length > 6
- ? allReportsData.slice(0, 4)
- : allReportsData
- : [];
+ if (isLoading || isFetching) {
+ return (
+
+
+
+ );
+ }
return (
- {previewList?.map((report) => (
+ {allReportsData?.map((report) => (
From 60ca55e576ca524c3687aae5c0235bd4740993ca Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:36:48 +0900
Subject: [PATCH 04/11] =?UTF-8?q?refactor=20:=20API=EC=97=90=EC=84=9C=20?=
=?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A8=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20rea?=
=?UTF-8?q?ct=20query=EC=9D=98=20select=EB=A1=9C=20=EC=9D=BC=EB=B6=80?=
=?UTF-8?q?=EB=A7=8C=20=ED=99=94=EB=A9=B4=EC=97=90=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/admin/useGetAllInquiries.ts | 1 +
src/hooks/admin/useGetAllReports.ts | 9 +++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/hooks/admin/useGetAllInquiries.ts b/src/hooks/admin/useGetAllInquiries.ts
index b4b7b797..dfa4f64f 100644
--- a/src/hooks/admin/useGetAllInquiries.ts
+++ b/src/hooks/admin/useGetAllInquiries.ts
@@ -10,6 +10,7 @@ export const useGetAllInquiries = () => {
} = useQuery({
queryKey: [Inquiries.allInquiries],
queryFn: () => getAllInquiries(),
+ select: (allInquiries) => allInquiries.slice(0, 5),
});
return { allInquiriesData, isLoading, isFetching };
diff --git a/src/hooks/admin/useGetAllReports.ts b/src/hooks/admin/useGetAllReports.ts
index ab7c1f31..29b1b19b 100644
--- a/src/hooks/admin/useGetAllReports.ts
+++ b/src/hooks/admin/useGetAllReports.ts
@@ -3,10 +3,15 @@ import { ReportData } from '../queries/user/keys';
import { getAllReports } from '../../api/report.api';
export const useGetAllReports = () => {
- const { data: allReportsData, isLoading } = useQuery({
+ const {
+ data: allReportsData,
+ isLoading,
+ isFetching,
+ } = useQuery({
queryKey: [ReportData.allReports],
queryFn: () => getAllReports(),
+ select: (allReports) => allReports.slice(0, 5),
});
- return { allReportsData, isLoading };
+ return { allReportsData, isLoading, isFetching };
};
From e9cc75ecbdb1d32fb41dbd8ef4765acf6c101cbc Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:58:22 +0900
Subject: [PATCH 05/11] =?UTF-8?q?feat=20:=20"=ED=9A=8C=EC=9B=90=20?=
=?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C"=20API=20=EC=97=B0?=
=?UTF-8?q?=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../admin/userCard/UserCard.styled.ts | 4 +--
src/components/admin/userCard/UserCard.tsx | 33 +++++++++++--------
src/models/auth.ts | 6 ++--
src/pages/admin/adminAllUser/AdminAllUser.tsx | 4 +--
4 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/src/components/admin/userCard/UserCard.styled.ts b/src/components/admin/userCard/UserCard.styled.ts
index 1bc8839e..d70929e1 100644
--- a/src/components/admin/userCard/UserCard.styled.ts
+++ b/src/components/admin/userCard/UserCard.styled.ts
@@ -35,7 +35,7 @@ export const TextLabel = styled.label`
export const TextContent = styled.p<{
$userState?: UserState;
}>`
- font-size: 14px;
+ font-size: 13px;
color: ${({ theme, $userState }) =>
$userState === UserState.ONLINE
? theme.color.green
@@ -43,7 +43,7 @@ export const TextContent = styled.p<{
? theme.color.blue
: $userState === UserState.SUSPENDED
? theme.color.red
- : theme.color.white};
+ : theme.color.primary};
margin-left: 15px;
`;
diff --git a/src/components/admin/userCard/UserCard.tsx b/src/components/admin/userCard/UserCard.tsx
index 27bf9b5b..d51db4c2 100644
--- a/src/components/admin/userCard/UserCard.tsx
+++ b/src/components/admin/userCard/UserCard.tsx
@@ -2,6 +2,7 @@ import React from 'react';
import * as S from './UserCard.styled';
import Avatar from '../../common/avatar/Avatar';
import { type AllUser } from '../../../models/auth';
+import { formatDate } from '../../../util/formatDate';
interface UserCardProps {
userData: AllUser;
@@ -11,34 +12,38 @@ const UserCard = ({ userData }: UserCardProps) => {
return (
-
- {userData.user.nickname}
+
+ {userData.nickname}
이메일
{userData.email}
회원 상태
-
+ {/*
{userData.userState}
-
+ */}
경고 횟수
- {userData.reportedCount === 0
- ? '없음'
- : `${userData.reportedCount}번`}
+ {userData.warning === 0 ? '없음' : `${userData.warning}번`}
포지션
- {userData.position.map((position) => position.name).join(', ')}
+ {userData.position
+ ? userData.position.map((position) => position.name).join(', ')
+ : '선택된 포지션이 없습니다.'}
대표 스킬
-
- {userData.skill.map((skillTag) => (
-
- ))}
-
+ {userData.skill ? (
+
+ {userData.skill.map((skillTag) => (
+
+ ))}
+
+ ) : (
+ 선택된 스킬이 없습니다.
+ )}
계정 생성 날짜
- {userData.createdAt}
+ {formatDate(userData.createdAt)}
);
diff --git a/src/models/auth.ts b/src/models/auth.ts
index fe0a23c1..aa4e95d6 100644
--- a/src/models/auth.ts
+++ b/src/models/auth.ts
@@ -47,8 +47,9 @@ export interface AllUserPreview {
id: number;
nickname: string;
email: string;
- profileImg: 'string';
+ profileImg: string;
// userState: UserState;
+ warning: number;
createdAt: string;
}
@@ -59,10 +60,9 @@ export interface ApiGetAllUsers extends ApiCommonType {
export interface AllUser extends AllUserPreview {
skill: SkillTag[];
position: PositionTag[];
- reportedCount: number;
}
export interface AllUserList {
- allUsers: AllUser[];
+ users: AllUser[];
totalPages: number;
}
diff --git a/src/pages/admin/adminAllUser/AdminAllUser.tsx b/src/pages/admin/adminAllUser/AdminAllUser.tsx
index 259a433a..4d6f9965 100644
--- a/src/pages/admin/adminAllUser/AdminAllUser.tsx
+++ b/src/pages/admin/adminAllUser/AdminAllUser.tsx
@@ -18,7 +18,7 @@ const AdminAllUser = () => {
return ;
}
- if (!allUserData || allUserData.allUsers.length === 0) {
+ if (!allUserData || allUserData.users.length === 0) {
return {ADMIN_MODAL_MESSAGE.NO_RESULT};
}
@@ -37,7 +37,7 @@ const AdminAllUser = () => {
- {allUserData.allUsers?.map((userData) => (
+ {allUserData.users.map((userData) => (
))}
From 4af1c7d05d2d2aa8ab86578fd4af82d674b758b2 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Sun, 8 Jun 2025 23:16:54 +0900
Subject: [PATCH 06/11] =?UTF-8?q?refactor=20:=20=EA=B4=80=EB=A6=AC?=
=?UTF-8?q?=EC=9E=90=20"=ED=9A=8C=EC=9B=90=20=EC=A0=84=EC=B2=B4=20?=
=?UTF-8?q?=EC=A1=B0=ED=9A=8C"=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=AA=85=20?=
=?UTF-8?q?=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/admin/adminAllUser/AdminAllUser.tsx | 55 ---------------
.../AdminUser.styled.ts} | 0
src/pages/admin/adminUser/AdminUser.tsx | 69 +++++++++++++++++++
3 files changed, 69 insertions(+), 55 deletions(-)
delete mode 100644 src/pages/admin/adminAllUser/AdminAllUser.tsx
rename src/pages/admin/{adminAllUser/AdminAllUser.styled.ts => adminUser/AdminUser.styled.ts} (100%)
create mode 100644 src/pages/admin/adminUser/AdminUser.tsx
diff --git a/src/pages/admin/adminAllUser/AdminAllUser.tsx b/src/pages/admin/adminAllUser/AdminAllUser.tsx
deleted file mode 100644
index 4d6f9965..00000000
--- a/src/pages/admin/adminAllUser/AdminAllUser.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import * as S from './AdminAllUser.styled';
-import AdminTitle from '../../../components/common/admin/title/AdminTitle';
-import { useGetAllUsers } from '../../../hooks/admin/useGetAllUsers';
-import LoadingSpinner from '../../../components/common/loadingSpinner/LoadingSpinner';
-import UserCard from '../../../components/admin/userCard/UserCard';
-import ScrollPreventor from '../../../components/common/modal/ScrollPreventor';
-import SearchBar from '../../../components/common/admin/searchBar/SearchBar';
-import Pagination from '../../../components/common/pagination/Pagination';
-import useSearchBar from '../../../hooks/admin/useSearchBar';
-import { ADMIN_MODAL_MESSAGE } from '../../../constants/admin/adminModal';
-
-const AdminAllUser = () => {
- const { searchUnit, value, handleGetKeyword, handleChangePagination } =
- useSearchBar();
- const { allUserData, isLoading, isFetching } = useGetAllUsers(searchUnit);
-
- if (isLoading || isFetching) {
- return ;
- }
-
- if (!allUserData || allUserData.users.length === 0) {
- return {ADMIN_MODAL_MESSAGE.NO_RESULT};
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
- {allUserData.users.map((userData) => (
-
- ))}
-
-
-
-
-
- );
-};
-
-export default AdminAllUser;
diff --git a/src/pages/admin/adminAllUser/AdminAllUser.styled.ts b/src/pages/admin/adminUser/AdminUser.styled.ts
similarity index 100%
rename from src/pages/admin/adminAllUser/AdminAllUser.styled.ts
rename to src/pages/admin/adminUser/AdminUser.styled.ts
diff --git a/src/pages/admin/adminUser/AdminUser.tsx b/src/pages/admin/adminUser/AdminUser.tsx
new file mode 100644
index 00000000..cac91bb4
--- /dev/null
+++ b/src/pages/admin/adminUser/AdminUser.tsx
@@ -0,0 +1,69 @@
+import * as S from './AdminUser.styled';
+import AdminTitle from '../../../components/common/admin/title/AdminTitle';
+import { useGetAllUsers } from '../../../hooks/admin/useGetAllUsers';
+import LoadingSpinner from '../../../components/common/loadingSpinner/LoadingSpinner';
+import UserCard from '../../../components/admin/userCard/UserCard';
+import ScrollPreventor from '../../../components/common/modal/ScrollPreventor';
+import SearchBar from '../../../components/common/admin/searchBar/SearchBar';
+import Pagination from '../../../components/common/pagination/Pagination';
+import useSearchBar from '../../../hooks/admin/useSearchBar';
+import { ADMIN_MODAL_MESSAGE } from '../../../constants/admin/adminModal';
+import { Link } from 'react-router-dom';
+import { ADMIN_ROUTE } from '../../../constants/routes';
+
+const AdminUser = () => {
+ const { searchUnit, value, handleGetKeyword, handleChangePagination } =
+ useSearchBar();
+ const { allUserData, isLoading, isFetching } = useGetAllUsers(searchUnit);
+
+ if (isLoading || isFetching) {
+ return ;
+ }
+
+ if (!allUserData || allUserData.users.length === 0) {
+ return {ADMIN_MODAL_MESSAGE.NO_RESULT};
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {allUserData.users.map((userData) => (
+
+
+
+ ))}
+
+
+
+
+
+
+ >
+ );
+};
+
+export default AdminUser;
From 54a1da4ffe7e5884d4a58fe946e8091e1512d3a8 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Mon, 9 Jun 2025 21:51:11 +0900
Subject: [PATCH 07/11] =?UTF-8?q?feat=20=20:=20=EB=A6=AC=EB=B7=B0=20?=
=?UTF-8?q?=EC=82=AC=ED=95=AD=20=EB=B0=98=EC=98=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/admin/mainCard/MainCard.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/components/admin/mainCard/MainCard.tsx b/src/components/admin/mainCard/MainCard.tsx
index 6fa48641..f19bb069 100644
--- a/src/components/admin/mainCard/MainCard.tsx
+++ b/src/components/admin/mainCard/MainCard.tsx
@@ -1,6 +1,7 @@
import * as S from './MainCard.styled';
import arrowRight from '../../../assets/ArrowRight.svg';
import React from 'react';
+import ContentBorder from '../../common/contentBorder/ContentBorder';
interface MainCardProps {
title: string;
@@ -20,7 +21,7 @@ const MainCard = ({ title, moreLink, children }: MainCardProps) => {
)}
-
+
{children}
From 6ff55e5e9ea509bc0e5125f573cf8dda59f0e1ed Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Mon, 9 Jun 2025 21:53:10 +0900
Subject: [PATCH 08/11] =?UTF-8?q?feat=20:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?=
=?UTF-8?q?"=ED=9A=8C=EC=9B=90=20=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C"?=
=?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EB=9D=BC=EC=9A=B0=ED=8A=B8=20?=
=?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/routes/AdminRoutes.tsx | 44 ++++++++++++++++++++++++++++++++++----
1 file changed, 40 insertions(+), 4 deletions(-)
diff --git a/src/routes/AdminRoutes.tsx b/src/routes/AdminRoutes.tsx
index 7ec5e7da..4bf800c0 100644
--- a/src/routes/AdminRoutes.tsx
+++ b/src/routes/AdminRoutes.tsx
@@ -2,6 +2,12 @@ import NotFoundPage from '../pages/notFoundPage/NotFoundPage';
import { lazy } from 'react';
import { ADMIN_ROUTE } from '../constants/routes';
import ProtectAdminRoute from './ProtectAdminRoute';
+import AdminUserDetail from '../components/admin/adminUserDetail/AdminUserDetail';
+import UserProjects from '../components/user/userPage/userProjectList/UserProjectList';
+import Profile from '../components/user/mypage/myProfile/profile/Profile';
+import { Navigate } from 'react-router-dom';
+import ActivityLog from '../components/user/mypage/activityLog/ActivityLog';
+import Notifications from '../components/user/mypage/notifications/Notifications';
const Sidebar = lazy(
() => import('../components/common/admin/sidebar/AdminSidebar')
@@ -20,7 +26,7 @@ const NoticeDetail = lazy(
);
const Banner = lazy(() => import('../pages/admin/adminBanner/AdminBanner'));
const Tags = lazy(() => import('../pages/admin/adminTags/AdminTags'));
-const AllUser = lazy(() => import('../pages/admin/adminAllUser/AdminAllUser'));
+const AdminUser = lazy(() => import('../pages/admin/adminUser/AdminUser'));
const Reports = lazy(() => import('../pages/admin/adminReports/AdminReports'));
const Inquiries = lazy(
() => import('../pages/admin/adminInquiries/AdminInquiries')
@@ -39,7 +45,7 @@ export const AdminRoutes = () => {
children: [
{
index: true,
- element: ,
+ element: ,
},
{
path: ADMIN_ROUTE.notice,
@@ -69,8 +75,38 @@ export const AdminRoutes = () => {
element: ,
},
{
- path: ADMIN_ROUTE.allUser,
- element: ,
+ path: ADMIN_ROUTE.users,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.users}/:userId`,
+ element: ,
+ children: [
+ {
+ index: true,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.basic}`,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.log}`,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.appliedProject}`,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.joinedProject}`,
+ element: ,
+ },
+ {
+ path: `${ADMIN_ROUTE.createdProject}`,
+ element: ,
+ },
+ ],
},
{
path: ADMIN_ROUTE.reports,
From e55b01322c9c24d6ad709e88410ac48d17b6a53c Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Mon, 9 Jun 2025 21:53:44 +0900
Subject: [PATCH 09/11] =?UTF-8?q?refactor=20:=20=ED=9A=8C=EC=9B=90=20?=
=?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20->=20=ED=9A=8C?=
=?UTF-8?q?=EC=9B=90=20=EC=A1=B0=ED=9A=8C=EB=A1=9C=20=EC=9D=B4=EB=A6=84=20?=
=?UTF-8?q?=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/constants/admin/sidebar.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/constants/admin/sidebar.ts b/src/constants/admin/sidebar.ts
index 55535b2a..7f517e66 100644
--- a/src/constants/admin/sidebar.ts
+++ b/src/constants/admin/sidebar.ts
@@ -33,8 +33,8 @@ export const SIDEBAR_LIST = {
user: [
{
name: 'allUser',
- title: '전체 회원 조회',
- router: ADMIN_ROUTE.allUser,
+ title: '회원 조회',
+ router: ADMIN_ROUTE.users,
},
{
name: 'reports',
From f335657cb55ce41387b01d102a6a5e6dc83636c2 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Mon, 9 Jun 2025 21:54:03 +0900
Subject: [PATCH 10/11] =?UTF-8?q?feat=20:=20=ED=9A=8C=EC=9B=90=20=EC=83=81?=
=?UTF-8?q?=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20query=20key=20=EC=B6=94?=
=?UTF-8?q?=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/queries/user/keys.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/hooks/queries/user/keys.ts b/src/hooks/queries/user/keys.ts
index 1c50aa6b..a24397c6 100644
--- a/src/hooks/queries/user/keys.ts
+++ b/src/hooks/queries/user/keys.ts
@@ -66,4 +66,5 @@ export const ReportData = {
export const UserData = {
allUser: ['AllUser'],
allUserPreview: ['AllUserPreview'],
+ userInfo: ['userInfo'],
};
From 0e993af2bd7730eaa4a3cd1e3bfb099f59117519 Mon Sep 17 00:00:00 2001
From: Cho SeungYeon <111514472+layout-SY@users.noreply.github.com>
Date: Mon, 9 Jun 2025 21:54:26 +0900
Subject: [PATCH 11/11] =?UTF-8?q?feat=20:=20ADMIN=5FROUTE=20=EC=83=81?=
=?UTF-8?q?=EC=88=98=EC=97=90=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20=EB=84=A4?=
=?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/constants/routes.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/constants/routes.ts b/src/constants/routes.ts
index f65de3b6..39ee6e37 100644
--- a/src/constants/routes.ts
+++ b/src/constants/routes.ts
@@ -37,11 +37,16 @@ export const ADMIN_ROUTE = {
notice: 'notice',
banner: 'banner',
tags: 'tags',
- allUser: 'all-user',
+ users: 'users',
reports: 'reports',
inquiries: 'inquiries',
manage: 'manage',
detail: 'detail',
write: 'write',
modification: 'modification',
+ basic: 'basic',
+ log: 'log',
+ joinedProject: 'joined-project',
+ createdProject: 'created-project',
+ appliedProject: 'apply-project',
};