From e183b1e8fd0cf1b3bcb057a1beb1672fb3a4e47a Mon Sep 17 00:00:00 2001 From: pkiop Date: Tue, 14 Mar 2023 23:40:51 +0900 Subject: [PATCH 01/10] =?UTF-8?q?Feat:=20=ED=8F=AC=ED=8A=B8=ED=8F=B4?= =?UTF-8?q?=EB=A6=AC=EC=98=A4=20=EC=82=AD=EC=A0=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/httpClient.ts | 3 +- components/app/PortfolioDetail.tsx | 60 +++++++++++++++--------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/apis/httpClient.ts b/apis/httpClient.ts index a8ab8d95..37d26d95 100644 --- a/apis/httpClient.ts +++ b/apis/httpClient.ts @@ -62,10 +62,11 @@ export class HttpClient { }); } - delete(requestConfig?: AxiosRequestConfig) { + delete(requestConfig?: AxiosRequestConfig, data?: unknown) { return this.api.delete("", { ...HttpClient.clientConfig, ...requestConfig, + data, }); } diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 43c37134..7c44fb5c 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -79,6 +79,14 @@ export default function Detail({ openToast("복사가 완료되었습니다."); }; + const deletePortfolio = () => { + // eslint-disable-next-line no-restricted-globals + if (confirm("정말로 삭제하시겠습니까?")) { + httpClient.portfolio.delete({}, { portfolioId: portfolio.portfolioId }); + router.push("/"); + } + }; + return (
@@ -154,36 +162,28 @@ export default function Detail({ - {userInfo.memberRoleType === "ROLE_ADMIN" || - (true && ( - <> -
- - 노출순위 변경하기: - - - -
- - - 1} - > - - 수정 - - 1} - > - - 삭제 - - - - - ))} + {userInfo.memberRoleType === "ROLE_ADMIN" && ( + <> +
+ + 노출순위 변경하기: + + + +
+ + + deletePortfolio()} + > + + 삭제 + + + + + )}
{portfolio.contributorList.length > 0 && (
From 58e22a5b3ec7e10424c62581812800328b37c4c4 Mon Sep 17 00:00:00 2001 From: pkiop Date: Tue, 14 Mar 2023 23:51:40 +0900 Subject: [PATCH 02/10] =?UTF-8?q?Feat:=20status=20optional=EB=A1=9C=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 --- components/atoms/DetailButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atoms/DetailButton.tsx b/components/atoms/DetailButton.tsx index 401d8d35..7e69fbec 100644 --- a/components/atoms/DetailButton.tsx +++ b/components/atoms/DetailButton.tsx @@ -4,7 +4,7 @@ import { ButtonHTMLAttributes, ReactNode } from "react"; type ButtonStatus = "active" | "disabled"; interface ButtonProps extends ButtonHTMLAttributes { - status: ButtonStatus; + status?: ButtonStatus; children: ReactNode; className?: string; } From 6d7a80edb05a49c8bdeb5c0498dad3f690468a6a Mon Sep 17 00:00:00 2001 From: pkiop Date: Tue, 14 Mar 2023 23:52:02 +0900 Subject: [PATCH 03/10] =?UTF-8?q?Feat:=20recommendType=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 --- apis/httpClient.ts | 1 + components/app/PortfolioDetail.tsx | 29 +++++++++++++++---------- pages/portfolio/[portfolioId]/index.tsx | 3 ++- types/portfolio.interface.ts | 2 ++ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apis/httpClient.ts b/apis/httpClient.ts index 37d26d95..cfa33739 100644 --- a/apis/httpClient.ts +++ b/apis/httpClient.ts @@ -129,6 +129,7 @@ export default { portfolio: new HttpClient("/api/portfolio", axiosConfig), portfolioViewsAdd: new HttpClient("/api/portfolio/views/add", axiosConfig), portfolioMember: new HttpClient("/api/portfolio/member", axiosConfig), + portfolioRecommend: new HttpClient("/api/portfolio/recommend", axiosConfig), oauth: new HttpClient("/api/login/oauth2", axiosConfig), skill: new HttpClient("/api/skill", axiosConfig), member: new HttpClient("/api/member", axiosConfig), diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 7c44fb5c..11d0994f 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -1,5 +1,5 @@ import { getKoreanDate } from "@/utils/date"; -import type { Portfolio } from "@/types/portfolio.interface"; +import type { Portfolio, RecommendType } from "@/types/portfolio.interface"; import { CopyToClipboard } from "react-copy-to-clipboard"; import { useRouter } from "next/router"; import useOverlay from "@/hooks/useOverlay"; @@ -18,8 +18,6 @@ import FilledHeartIcon from "../Icon/FilledHeartIcon"; import EditIcon from "../Icon/EditIcon"; import ChipGroup from "../atoms/ChipGroup"; import GithubIcon from "../Icon/GithubIcon"; -import PencelIcon from "../Icon/PencelIcon"; -import Input from "../atoms/Input"; import Kebab from "../common/KebabMenu"; import TrashCanIcon from "../Icon/TrashCanIcon"; @@ -30,6 +28,7 @@ interface PortfolioDetailProps { isMyPortfolio: boolean; bookmarks: number; views: number; + recommendType: RecommendType; } export default function Detail({ @@ -39,6 +38,7 @@ export default function Detail({ isMyPortfolio, bookmarks, views, + recommendType, }: PortfolioDetailProps) { const { openToast } = useOverlay(); const { user: userInfo } = useUser(); @@ -75,11 +75,17 @@ export default function Detail({ ); }; + const handleRecommend = () => { + httpClient.portfolioRecommend + .put({ portfolioId: portfolio.portfolioId }) + .then(() => queryClient.invalidateQueries([KEY.PORTFOLIO])); + }; + const handleShare = () => { openToast("복사가 완료되었습니다."); }; - const deletePortfolio = () => { + const handleDelete = () => { // eslint-disable-next-line no-restricted-globals if (confirm("정말로 삭제하시겠습니까?")) { httpClient.portfolio.delete({}, { portfolioId: portfolio.portfolioId }); @@ -164,18 +170,17 @@ export default function Detail({ {userInfo.memberRoleType === "ROLE_ADMIN" && ( <> -
- - 노출순위 변경하기: - - - -
+ deletePortfolio()} + onClick={handleDelete} > 삭제 diff --git a/pages/portfolio/[portfolioId]/index.tsx b/pages/portfolio/[portfolioId]/index.tsx index d12ba392..20194745 100644 --- a/pages/portfolio/[portfolioId]/index.tsx +++ b/pages/portfolio/[portfolioId]/index.tsx @@ -25,7 +25,7 @@ export default function PortfolioIdPage({ portfolio }: PortfolioIdPageProps) { const dateParsedPortfolio: Portfolio = getDateParsedData(portfolio); const type = dateParsedPortfolio.portfolioType; const { - data: { bookmarkYn, followYn, bookmarks, views }, + data: { bookmarkYn, followYn, bookmarks, views, recommendType }, } = usePortfolio(dateParsedPortfolio.portfolioId); const { user: userInfo } = useUser(); const isMyPortfolio = @@ -81,6 +81,7 @@ export default function PortfolioIdPage({ portfolio }: PortfolioIdPageProps) { bookmarks={bookmarks} views={views} isMyPortfolio={isMyPortfolio} + recommendType={recommendType} /> } comment={ diff --git a/types/portfolio.interface.ts b/types/portfolio.interface.ts index b0c15c8a..464d0241 100644 --- a/types/portfolio.interface.ts +++ b/types/portfolio.interface.ts @@ -10,12 +10,14 @@ export type PortfolioListType = | "upload" | "detail" | "search"; +export type RecommendType = "NONE" | "RECOMMEND"; export type Portfolio = { portfolioId: number; writer: PortfolioWriter; portfolioUrl: string; portfolioType: PortfolioType; + recommendType: RecommendType; title: string; description: string; bookmarkYn: boolean; From cc6babdd586ae0d09deb12fee509eb76afde37da Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 00:25:41 +0900 Subject: [PATCH 04/10] =?UTF-8?q?Feat:=20=EC=B6=94=EC=B2=9C=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EB=85=B8=EC=B6=9C=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 --- layouts/Main.tsx | 9 ++++++++- pages/index.tsx | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/layouts/Main.tsx b/layouts/Main.tsx index 2c0c409e..c3414324 100644 --- a/layouts/Main.tsx +++ b/layouts/Main.tsx @@ -4,14 +4,21 @@ interface MainLayoutProps { app: ReactNode; title: ReactNode; filter: ReactNode; + recommend?: ReactNode; } -export default function MainLayout({ app, title, filter }: MainLayoutProps) { +export default function MainLayout({ + app, + title, + filter, + recommend, +}: MainLayoutProps) { return (
{title}
{filter}
+ {recommend &&
{recommend}
}
{app}
diff --git a/pages/index.tsx b/pages/index.tsx index 2dfa66b9..f5d5ae0a 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -2,17 +2,32 @@ import { MainLayout } from "@/layouts"; import MainTitle from "@/components/main/MainTitle"; import MainFilter from "@/components/main/MainFilter"; import { usePortfolioList } from "@/models/portfolio"; -import { MainPortfolioList } from "@/components"; +import { MainPortfolioList, Portfolio as PortfolioView } from "@/components"; import { useState } from "react"; -import { SortType } from "@/types/portfolio.interface"; +import { Portfolio, SortType } from "@/types/portfolio.interface"; +import { useQuery } from "@tanstack/react-query"; +import httpClient from "@/apis"; +import { useRouter } from "next/router"; +import RecommendIcon from "@/components/Icon/RecommendIcon"; export default function Home() { + const router = useRouter(); const [keyword, setKeyword] = useState("ALL"); const { pages, isFetchingNextPage, fetchNextPage, customHasNextPage } = usePortfolioList( { size: 12 }, keyword !== "ALL" ? { sortType: keyword } : {}, ); + const { data } = useQuery(["recommendPortfolio"], () => + httpClient.portfolio + .search({ + pagination: { size: 6, page: 0 }, + filter: { + recommendStatus: "RECOMMEND", + }, + }) + .then((r) => r.data), + ); return ( } filter={} + recommend={ + ["ALL", "BOOKMARKS"].includes(keyword) ? ( + <> +
+ + 추천 프로젝트 +
+
+ {data?.list.map((portfolio: Portfolio) => ( + + router.push(`/portfolio/${portfolio.portfolioId}`) + } + key={portfolio.portfolioId} + /> + ))} +
+
+ + ) : undefined + } /> ); } From 7bc6c0f1f570f191442a5a53d80a7e683e6e1e58 Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 00:26:37 +0900 Subject: [PATCH 05/10] =?UTF-8?q?Feat:=20recommendStatus=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Icon/RecommendIcon.tsx | 18 ++++++++++++++++++ components/app/PortfolioDetail.tsx | 8 ++++---- components/common/Portfolio.tsx | 11 +++++++++-- pages/index.tsx | 1 + pages/portfolio/[portfolioId]/index.tsx | 4 ++-- types/portfolio.interface.ts | 5 +++-- 6 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 components/Icon/RecommendIcon.tsx diff --git a/components/Icon/RecommendIcon.tsx b/components/Icon/RecommendIcon.tsx new file mode 100644 index 00000000..efe1d4bb --- /dev/null +++ b/components/Icon/RecommendIcon.tsx @@ -0,0 +1,18 @@ +import React from "react"; + +export default function RecommendIcon({ size = 12 }: { size?: number }) { + return ( + + + + ); +} diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 11d0994f..8ed92680 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -1,5 +1,5 @@ import { getKoreanDate } from "@/utils/date"; -import type { Portfolio, RecommendType } from "@/types/portfolio.interface"; +import type { Portfolio, RecommendStatus } from "@/types/portfolio.interface"; import { CopyToClipboard } from "react-copy-to-clipboard"; import { useRouter } from "next/router"; import useOverlay from "@/hooks/useOverlay"; @@ -28,7 +28,7 @@ interface PortfolioDetailProps { isMyPortfolio: boolean; bookmarks: number; views: number; - recommendType: RecommendType; + recommendStatus: RecommendStatus; } export default function Detail({ @@ -38,7 +38,7 @@ export default function Detail({ isMyPortfolio, bookmarks, views, - recommendType, + recommendStatus, }: PortfolioDetailProps) { const { openToast } = useOverlay(); const { user: userInfo } = useUser(); @@ -174,7 +174,7 @@ export default function Detail({ onClick={handleRecommend} className="flex items-center bg-primary-dark_gray px-[0.75rem] py-[0.75rem] rounded-full text-white gap-[0.5rem]" > - 추천 {recommendType === "NONE" ? "등록" : "해제"} + 추천 {recommendStatus === "NONE" ? "등록" : "해제"} diff --git a/components/common/Portfolio.tsx b/components/common/Portfolio.tsx index c10ac62f..1d479d18 100644 --- a/components/common/Portfolio.tsx +++ b/components/common/Portfolio.tsx @@ -8,6 +8,7 @@ import { getFileDownloadUrl } from "@/utils/file"; import classNames from "classnames"; import config from "@/config"; import ChipGroup from "../atoms/ChipGroup"; +import RecommendIcon from "../Icon/RecommendIcon"; interface PortfolioProps { portfolio: Portfolio; @@ -25,7 +26,7 @@ export default function PortfolioView({ portfolio, onClick }: PortfolioProps) { return (
@@ -81,7 +82,13 @@ export default function PortfolioView({ portfolio, onClick }: PortfolioProps) {
-
+
+ {portfolio.recommendStatus === "RECOMMEND" && ( +
+ + [추천 프로젝트] +
+ )} {`조회수 ${portfolio.views}회 · ${getTimeAgo(portfolio.createdDate)}`}
diff --git a/pages/index.tsx b/pages/index.tsx index f5d5ae0a..c926e35f 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -18,6 +18,7 @@ export default function Home() { { size: 12 }, keyword !== "ALL" ? { sortType: keyword } : {}, ); + const { data } = useQuery(["recommendPortfolio"], () => httpClient.portfolio .search({ diff --git a/pages/portfolio/[portfolioId]/index.tsx b/pages/portfolio/[portfolioId]/index.tsx index 20194745..ed1f685a 100644 --- a/pages/portfolio/[portfolioId]/index.tsx +++ b/pages/portfolio/[portfolioId]/index.tsx @@ -25,7 +25,7 @@ export default function PortfolioIdPage({ portfolio }: PortfolioIdPageProps) { const dateParsedPortfolio: Portfolio = getDateParsedData(portfolio); const type = dateParsedPortfolio.portfolioType; const { - data: { bookmarkYn, followYn, bookmarks, views, recommendType }, + data: { bookmarkYn, followYn, bookmarks, views, recommendStatus }, } = usePortfolio(dateParsedPortfolio.portfolioId); const { user: userInfo } = useUser(); const isMyPortfolio = @@ -81,7 +81,7 @@ export default function PortfolioIdPage({ portfolio }: PortfolioIdPageProps) { bookmarks={bookmarks} views={views} isMyPortfolio={isMyPortfolio} - recommendType={recommendType} + recommendStatus={recommendStatus} /> } comment={ diff --git a/types/portfolio.interface.ts b/types/portfolio.interface.ts index 464d0241..db8f305b 100644 --- a/types/portfolio.interface.ts +++ b/types/portfolio.interface.ts @@ -10,14 +10,14 @@ export type PortfolioListType = | "upload" | "detail" | "search"; -export type RecommendType = "NONE" | "RECOMMEND"; +export type RecommendStatus = "NONE" | "RECOMMEND"; export type Portfolio = { portfolioId: number; writer: PortfolioWriter; portfolioUrl: string; portfolioType: PortfolioType; - recommendType: RecommendType; + recommendStatus: RecommendStatus; title: string; description: string; bookmarkYn: boolean; @@ -89,6 +89,7 @@ export interface Filter { schoolGrade?: SchoolGradeType; sortType?: SortType; sortDirectionType?: SortDirectionType; + recommendStatus?: RecommendStatus; } export type SearchFilterPropertyType = | "uploadDateType" From f51f98ce02df67b742e9fc0795d55487ad1eaebb Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 00:34:36 +0900 Subject: [PATCH 06/10] =?UTF-8?q?Fix:=20=EC=B6=94=EC=B2=9C=20=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Icon/RecommendIcon.tsx | 10 ++++++++-- components/app/PortfolioDetail.tsx | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/components/Icon/RecommendIcon.tsx b/components/Icon/RecommendIcon.tsx index efe1d4bb..ff450c8d 100644 --- a/components/Icon/RecommendIcon.tsx +++ b/components/Icon/RecommendIcon.tsx @@ -1,6 +1,12 @@ import React from "react"; -export default function RecommendIcon({ size = 12 }: { size?: number }) { +export default function RecommendIcon({ + size = 12, + fill = "#3E73FB", +}: { + size?: number; + fill?: string; +}) { return ( ); diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 8ed92680..1a100738 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -20,6 +20,7 @@ import ChipGroup from "../atoms/ChipGroup"; import GithubIcon from "../Icon/GithubIcon"; import Kebab from "../common/KebabMenu"; import TrashCanIcon from "../Icon/TrashCanIcon"; +import RecommendIcon from "../Icon/RecommendIcon"; interface PortfolioDetailProps { portfolio: Portfolio; @@ -172,9 +173,10 @@ export default function Detail({ <> From 2311bfe02ec369671ab93f3bdbd52359cb2aa604 Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 00:35:53 +0900 Subject: [PATCH 07/10] =?UTF-8?q?Fix:=20fixture=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fixtures/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/fixtures/index.ts b/fixtures/index.ts index 71e94a5b..ffdda935 100644 --- a/fixtures/index.ts +++ b/fixtures/index.ts @@ -59,6 +59,7 @@ const portfolio: Portfolio = { views: 0, comments: 0, createdDate: new Date(), + recommendStatus: "NONE", }; const profileDescription = { From 9c5d209a879531eef8cbaa7067aa684d1f90f2ac Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 09:37:52 +0900 Subject: [PATCH 08/10] =?UTF-8?q?Feat:=20useRecommendPortfolio=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 --- models/portfolio/index.ts | 15 +++++++++++++++ pages/index.tsx | 16 ++-------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/models/portfolio/index.ts b/models/portfolio/index.ts index b51bf100..ebc026e3 100644 --- a/models/portfolio/index.ts +++ b/models/portfolio/index.ts @@ -96,10 +96,25 @@ const usePortfolio = (portfolioId?: number) => { return { data: data || fixture.portfolio }; }; +const useRecommendPortfolio = () => { + const { data } = useQuery(["recommendPortfolio"], () => + httpClient.portfolio + .search({ + pagination: { size: 6, page: 0 }, + filter: { + recommendStatus: "RECOMMEND", + }, + }) + .then((r) => r.data), + ); + return { data }; +}; + export { usePortfolio, usePortfolioList, usePortfolioListById, useCommentList, useMyPortfolioList, + useRecommendPortfolio, }; diff --git a/pages/index.tsx b/pages/index.tsx index c926e35f..cf5a2ac7 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,12 +1,10 @@ import { MainLayout } from "@/layouts"; import MainTitle from "@/components/main/MainTitle"; import MainFilter from "@/components/main/MainFilter"; -import { usePortfolioList } from "@/models/portfolio"; +import { usePortfolioList, useRecommendPortfolio } from "@/models/portfolio"; import { MainPortfolioList, Portfolio as PortfolioView } from "@/components"; import { useState } from "react"; import { Portfolio, SortType } from "@/types/portfolio.interface"; -import { useQuery } from "@tanstack/react-query"; -import httpClient from "@/apis"; import { useRouter } from "next/router"; import RecommendIcon from "@/components/Icon/RecommendIcon"; @@ -18,17 +16,7 @@ export default function Home() { { size: 12 }, keyword !== "ALL" ? { sortType: keyword } : {}, ); - - const { data } = useQuery(["recommendPortfolio"], () => - httpClient.portfolio - .search({ - pagination: { size: 6, page: 0 }, - filter: { - recommendStatus: "RECOMMEND", - }, - }) - .then((r) => r.data), - ); + const { data } = useRecommendPortfolio(); return ( Date: Wed, 15 Mar 2023 09:38:02 +0900 Subject: [PATCH 09/10] =?UTF-8?q?Feat:=20delete=20=EC=9D=B8=EC=9E=90=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 --- apis/httpClient.ts | 3 +-- components/app/PortfolioDetail.tsx | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apis/httpClient.ts b/apis/httpClient.ts index cfa33739..9727371d 100644 --- a/apis/httpClient.ts +++ b/apis/httpClient.ts @@ -62,11 +62,10 @@ export class HttpClient { }); } - delete(requestConfig?: AxiosRequestConfig, data?: unknown) { + delete(requestConfig?: AxiosRequestConfig) { return this.api.delete("", { ...HttpClient.clientConfig, ...requestConfig, - data, }); } diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 1a100738..6d6d4ab8 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -89,7 +89,9 @@ export default function Detail({ const handleDelete = () => { // eslint-disable-next-line no-restricted-globals if (confirm("정말로 삭제하시겠습니까?")) { - httpClient.portfolio.delete({}, { portfolioId: portfolio.portfolioId }); + httpClient.portfolio.delete({ + data: { portfolioId: portfolio.portfolioId }, + }); router.push("/"); } }; From 00026766e1d9aa5a430de87ed3ce4cccc4ea9061 Mon Sep 17 00:00:00 2001 From: pkiop Date: Wed, 15 Mar 2023 09:54:20 +0900 Subject: [PATCH 10/10] =?UTF-8?q?Feat:=20=EC=B6=94=EC=B2=9C=20ui=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 --- components/app/PortfolioDetail.tsx | 24 ++++++++++++++++++------ components/atoms/DetailButton.tsx | 5 ++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/components/app/PortfolioDetail.tsx b/components/app/PortfolioDetail.tsx index 6d6d4ab8..583d9f1c 100644 --- a/components/app/PortfolioDetail.tsx +++ b/components/app/PortfolioDetail.tsx @@ -8,6 +8,7 @@ import httpClient from "@/apis"; import { useQueryClient } from "@tanstack/react-query"; import KEY from "@/models/key"; import useUser from "@/hooks/useUser"; +import classNames from "classnames"; import Button from "../atoms/DetailButton"; import MemberGroup from "../atoms/MemberGroup"; import Description from "../portfolio/Description"; @@ -173,13 +174,24 @@ export default function Detail({ {userInfo.memberRoleType === "ROLE_ADMIN" && ( <> - + + 프로젝트 추천 + - 삭제 + 관리자 권한으로 삭제 diff --git a/components/atoms/DetailButton.tsx b/components/atoms/DetailButton.tsx index 7e69fbec..0d7780cc 100644 --- a/components/atoms/DetailButton.tsx +++ b/components/atoms/DetailButton.tsx @@ -14,8 +14,7 @@ const getButtonCss = (status: ButtonStatus): string => { bg-${status === "active" ? "primary-light_gray" : "primary-dark_gray"} text-${status === "active" ? "primary-dark_gray" : "primary-light_gray"} rounded-full - px-[0.65rem] - py-small + p-[0.75rem] shadow flex items-center @@ -34,7 +33,7 @@ export default function DetailButton({