From 36d6ab3a7400969cb28d43cf452ef39571d8ed2d Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 00:46:18 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EB=B0=B0=EA=B2=BD=EC=97=90=20=EC=96=B4?= =?UTF-8?q?=EB=96=A4=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=9D=B8=EC=A7=80=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/boards/page.tsx | 133 ++++++++++++++++--------------- frontend/src/app/page.tsx | 7 +- frontend/src/app/scrap/page.tsx | 12 ++- 3 files changed, 82 insertions(+), 70 deletions(-) diff --git a/frontend/src/app/boards/page.tsx b/frontend/src/app/boards/page.tsx index 9f901d31..948d425f 100755 --- a/frontend/src/app/boards/page.tsx +++ b/frontend/src/app/boards/page.tsx @@ -140,80 +140,83 @@ export default function Board() { }; return ( - <> -
-
-
{ - event.preventDefault() - if (ownBoard === 1) { - getOwnBoards(); - } else { - getBoards(); - } - }} className="mb-6 flex items-center justify-center"> - - -
-
-
- {boards.map((board, index)=>( - - - {board.title + ' (' + board.commentNum + ')'} - 작성일: {board.createdTime} - 작성자: {board.username} - - - - - - ))} -
+ <> +
+
+

게시판

- -
- -
- {currentPage} / {totalPages} +
+
{ + event.preventDefault() + if (ownBoard === 1) { + getOwnBoards(); + } else { + getBoards(); + } + }} className="mb-6 flex items-center justify-center"> + + +
+
+
+ {boards.map((board, index) => ( + + + {board.title + ' (' + board.commentNum + ')'} + 작성일: {board.createdTime} + 작성자: {board.username} + + + + + + ))} +
- -
-
- - - -
-
- +
+ {currentPage} / {totalPages} +
+ + + +
+ + + +
+ + ) } function PlusIcon(props: any) { return ( -
+
+

메인페이지

+
{chatRooms.map((chat, index) => ( @@ -85,7 +88,7 @@ export default function Main() { @@ -95,7 +98,7 @@ export default function Main() {
diff --git a/frontend/src/app/scrap/page.tsx b/frontend/src/app/scrap/page.tsx index 2f1f5363..38621b68 100755 --- a/frontend/src/app/scrap/page.tsx +++ b/frontend/src/app/scrap/page.tsx @@ -118,6 +118,9 @@ export default function Scrap() { <>
+
+

스크랩

+
{recipes.map((recipe, index) => ( @@ -154,9 +157,11 @@ export default function Scrap() { {/* 리뷰 작성 버튼은 선택된 레시피가 없거나 숨김 상태일 때만 보이도록 설정 */} {(selectedRecipe && selectedRecipe.recipeId === recipe.recipeId) && ( - + )} - @@ -184,7 +189,8 @@ export default function Scrap() {

정말 삭제하시겠습니까?

- +
From c5cfab5a658e53c625990b31497fb4ce8da614da Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 00:46:41 +0900 Subject: [PATCH 2/8] =?UTF-8?q?userPage=20=EC=9C=A0=EC=A0=80=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=202=EC=A4=84=20->=201=EC=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/user/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/user/page.tsx b/frontend/src/app/user/page.tsx index 48fb2481..d6be5eb5 100644 --- a/frontend/src/app/user/page.tsx +++ b/frontend/src/app/user/page.tsx @@ -173,7 +173,7 @@ export default function UserPage() { {userDetail && (

{userDetail.userName}

-
+
From 76059cfc5afe32c88f08aaabc7b7886990db8cec Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 00:47:00 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=ED=85=8D=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=83=89=EC=83=81=20=EC=B4=88=EB=A1=9D=EC=83=89?= =?UTF-8?q?=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 --- frontend/src/components/ui/button.tsx | 78 +++++++++++++-------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx index effbb4df..6a6687b4 100644 --- a/frontend/src/components/ui/button.tsx +++ b/frontend/src/components/ui/button.tsx @@ -5,51 +5,51 @@ import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300", - { - variants: { - variant: { - default: "bg-gray-900 text-gray-50 hover:bg-gray-900/90 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/90", - destructive: - "bg-red-500 text-gray-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/90", - outline: - "border border-gray-200 bg-white hover:bg-gray-100 hover:text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-50", - secondary: - "bg-gray-100 text-gray-900 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80", - ghost: "hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-50", - link: "text-gray-900 underline-offset-4 hover:underline dark:text-gray-50", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300", + { + variants: { + variant: { + default: "bg-gray-900 text-green-500 hover:bg-gray-900/90 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/90", // text-gray-50 -> text-green-500 + destructive: + "bg-red-500 text-green-500 hover:bg-red-500/90 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/90", // text-gray-50 -> text-green-500 + outline: + "border border-gray-200 bg-white text-green-500 hover:bg-gray-100 hover:text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-50", // 추가: text-green-500 + secondary: + "bg-gray-100 text-green-500 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80", // text-gray-900 -> text-green-500 + ghost: "text-green-500 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-50", // 추가: text-green-500 + link: "text-green-500 underline-offset-4 hover:underline dark:text-gray-50", // text-gray-900 -> text-green-500 + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } ) export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean } const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" - return ( - - ) - } + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } ) Button.displayName = "Button" From 8b45a41270c5fdf6df4f2924a157dd7402576870 Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 00:47:29 +0900 Subject: [PATCH 4/8] =?UTF-8?q?User=20=EC=A0=95=EB=B3=B4=20=EA=B0=80?= =?UTF-8?q?=EC=A0=B8=EC=98=A4=EA=B8=B0=20session=20->=20repository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/hello/aimju/user/service/UserService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/hello/aimju/user/service/UserService.java b/backend/src/main/java/hello/aimju/user/service/UserService.java index 902fa420..89f5674d 100644 --- a/backend/src/main/java/hello/aimju/user/service/UserService.java +++ b/backend/src/main/java/hello/aimju/user/service/UserService.java @@ -57,7 +57,10 @@ public UserInfoResponseDto getUserInfo(Long userId) { public UserDetailResponseDto getUserDetail(HttpSession session) { User user = getUserFromSession(session); - return new UserDetailResponseDto(user); + User curruentUser = userRepository.findById(user.getId()) + .orElseThrow(() -> new IllegalArgumentException("해당 유저를 찾을 수 없습니다: " + user.getId())); + + return new UserDetailResponseDto(curruentUser); } @Transactional From bc5a50099a5877ba4045d9fdd0010d58e9f7fb3b Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 01:01:11 +0900 Subject: [PATCH 5/8] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=200=20->=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/boards/page.tsx | 104 +++++++++++++------------------ 1 file changed, 43 insertions(+), 61 deletions(-) diff --git a/frontend/src/app/boards/page.tsx b/frontend/src/app/boards/page.tsx index 948d425f..bbc73445 100755 --- a/frontend/src/app/boards/page.tsx +++ b/frontend/src/app/boards/page.tsx @@ -1,28 +1,10 @@ -/** -* This code was generated by v0 by Vercel. -* @see https://v0.dev/t/xxZQctyMK7c -* Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app -*/ - -/** Add fonts into your Next.js project: - -import { Libre_Franklin } from 'next/font/google' - -libre_franklin({ - subsets: ['latin'], - display: 'swap', -}) - -To read more about using these font, please visit the Next.js documentation: -- App Directory: https://nextjs.org/docs/app/building-your-application/optimizing/fonts -- Pages Directory: https://nextjs.org/docs/pages/building-your-application/optimizing/fonts -**/ 'use client' -import { Button } from "@/components/ui/button" -import Link from "next/link" -import { CardTitle, CardDescription, CardHeader, CardFooter, Card } from "@/components/ui/card" -import {Header} from "@/components/ui/header"; -import React, {useEffect, useState} from "react"; +import * as React from "react"; +import { Button } from "@/components/ui/button"; +import Link from "next/link"; +import { CardTitle, CardDescription, CardHeader, CardFooter, Card } from "@/components/ui/card"; +import { Header } from "@/components/ui/header"; +import { useEffect, useState } from "react"; import axios from "axios"; import useUserStore from "@/store/useUserStore"; import useBoardStore from '@/store/useBoardStore'; @@ -36,59 +18,59 @@ type Board = { }; export default function Board() { - const [currentPage, setCurrentPage] = useState(0); - const [totalPages, setTotalPages] = useState(0); + const [currentPage, setCurrentPage] = useState(1); // 페이지를 1부터 시작 + const [totalPages, setTotalPages] = useState(1); const [boards, setBoards] = useState([]); - const {getState} = useUserStore; + const { getState } = useUserStore; const ownBoard = useBoardStore((state) => state.ownBoard); const [searchKeyword, setSearchKeyword] = useState(''); - const getBoards = async (page = 0)=>{ + const getBoards = async (page = 1) => { // 기본값을 1로 설정 try { let response; - if(searchKeyword === ''){ - response = await axios.get('/api/boards', { + if (searchKeyword === '') { + response = await axios.get('/api/boards', { params: { - page: page, + page: page - 1, // 요청 시 페이지를 0부터 시작하도록 변환 } }); - }else{ - response = await axios.get('/api/boards', { + } else { + response = await axios.get('/api/boards', { params: { - page: page, + page: page - 1, searchKeyword: searchKeyword } }); } - const boards: Board[] = await response.data.boardLists.map((b: any)=>({ + const boards: Board[] = await response.data.boardLists.map((b: any) => ({ id: b.id, title: b.title, commentNum: b.commentNum, createdTime: b.createdTime, username: b.username, })); - setTotalPages((response?.data.totalPages ===0 ?0 : response?.data.totalPages-1)); + setTotalPages((response?.data.totalPages === 0 ? 1 : response?.data.totalPages)); // 페이지를 1부터 시작하도록 설정 setBoards(boards); setSearchKeyword(searchKeyword); - } catch (error){ - console.log(error) + } catch (error) { + console.log(error); } }; - const getOwnBoards = async (page = 0) => { + const getOwnBoards = async (page = 1) => { // 기본값을 1로 설정 try { let response; if (searchKeyword === '') { response = await axios.get('/api/boards/current-user', { params: { - page: page, + page: page - 1, // 요청 시 페이지를 0부터 시작하도록 변환 } }); } else { response = await axios.get('/api/boards/current-user', { params: { - page: page, + page: page - 1, searchKeyword: searchKeyword } }); @@ -101,11 +83,11 @@ export default function Board() { createdTime: b.createdTime, username: b.username, })); - setTotalPages((response?.data.totalPages === 0 ? 0 : response?.data.totalPages - 1)); + setTotalPages((response?.data.totalPages === 0 ? 1 : response?.data.totalPages)); // 페이지를 1부터 시작하도록 설정 setBoards(boards); setSearchKeyword(searchKeyword); } catch (error) { - console.log(error) + console.log(error); } }; @@ -124,7 +106,7 @@ export default function Board() { getBoards(currentPage - 1); } setCurrentPage(currentPage - 1); - } + }; const handleNextPage = () => { if (ownBoard === 1) { @@ -133,7 +115,7 @@ export default function Board() { getBoards(currentPage + 1); } setCurrentPage(currentPage + 1); - } + }; const handleSearchChange = (e: React.ChangeEvent) => { setSearchKeyword(e.target.value); @@ -141,13 +123,13 @@ export default function Board() { return ( <> -
+

게시판

{ - event.preventDefault() + event.preventDefault(); if (ownBoard === 1) { getOwnBoards(); } else { @@ -160,7 +142,7 @@ export default function Board() { onChange={handleSearchChange} placeholder="검색어를 입력하세요" className="border border-gray-300 rounded px-4 py-2 mr-2 flex-grow" - style={{maxWidth: '300px', color: 'black'}} + style={{ maxWidth: '300px', color: 'black' }} />
-
@@ -198,14 +180,14 @@ export default function Board() {
- ) + ); } function PlusIcon(props: any) { @@ -217,13 +199,13 @@ function PlusIcon(props: any) { height="24" viewBox="0 0 24 24" fill="none" - stroke="currentColor" - strokeWidth="2" - strokeLinecap="round" - strokeLinejoin="round" - > - - - - ) -} \ No newline at end of file + stroke="currentColor" + strokeWidth="2" + strokeLinecap="round" + strokeLinejoin="round" + > + + + + ); +} From 9991a6e285dc4eddee399b6774109b181e4a370c Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 11:06:47 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EC=95=88=EC=93=B0=EC=9D=B4=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/scrap/page.tsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/frontend/src/app/scrap/page.tsx b/frontend/src/app/scrap/page.tsx index 38621b68..454f553e 100755 --- a/frontend/src/app/scrap/page.tsx +++ b/frontend/src/app/scrap/page.tsx @@ -25,7 +25,7 @@ import Modal from "react-modal"; import axios from "axios"; import { Button } from "@/components/ui/button" import Link from "next/link" -import { CardTitle, CardDescription, CardHeader, CardContent, CardFooter, Card } from "@/components/ui/card" +import { CardTitle, CardHeader, CardContent, CardFooter, Card } from "@/components/ui/card" import {Header} from "@/components/ui/header"; type Recipe = { @@ -46,17 +46,6 @@ export default function Scrap() { const [isModalOpen, setIsModalOpen] = useState(false); const [recipeToDelete, setRecipeToDelete] = useState(null); - const handleLogout = async () => { - try { - // 로그아웃 요청 보내기 - await axios.post('/api/logout'); - // 로그아웃 후 로그인 페이지로 이동 - router.push('/login'); - } catch (error) { - console.error('로그아웃 중 오류가 발생했습니다:', error); - } - }; - const router = useRouter(); useEffect(() => { From 748098b2476b3d581f49b7cdedf50253bd1799b1 Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 11:07:03 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=ED=99=95=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EC=B0=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/boards/[boardId]/page.tsx | 35 +++++++++++++++- frontend/src/app/page.tsx | 48 +++++++++++++++++++--- 2 files changed, 77 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/boards/[boardId]/page.tsx b/frontend/src/app/boards/[boardId]/page.tsx index fd635317..e2860468 100755 --- a/frontend/src/app/boards/[boardId]/page.tsx +++ b/frontend/src/app/boards/[boardId]/page.tsx @@ -28,6 +28,7 @@ import axios from "axios"; import useUserStore from "@/store/useUserStore"; import {DeleteIcon, ScissorsIcon} from "lucide-react"; import Image from "next/image"; +import Modal from "react-modal"; type Comment = { id: number; @@ -46,6 +47,7 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { const {getState} = useUserStore; const [modifyComment, setModifyComment] = useState(''); const [currentModifyCommentId, setCurrentModifyCommentId] = useState(null); + const [isModalOpen, setIsModalOpen] = useState(false); const router = useRouter(); const fetchComment = useCallback(async () => { @@ -103,9 +105,18 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { const handleDeleteBoard = async () => { const response = await axios.delete(`/api/boards/${boardId}`); + closeModal(); await router.push('/boards'); } + const openModal = () => { + setIsModalOpen(true); + }; + + const closeModal = () => { + setIsModalOpen(false); + }; + return ( <>
@@ -143,7 +154,7 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { )} {getState().user?.userName === author && ( - )} @@ -243,6 +254,28 @@ export default function BoardDetail({params}: {params: {boardId: string}}) {
+ {/* 삭제 확인 모달 */} + + {/* 모달 내부 스타일을 JSX 내에서 설정 */} +
+

정말 삭제하시겠습니까?

+
+ + +
+
+
) diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index d38e8763..6ceb5490 100755 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -26,6 +26,8 @@ import { CardTitle, CardHeader, CardContent, CardFooter, Card } from "@/componen import { Header } from "@/components/ui/header"; import React, { useEffect, useState } from "react"; import { TrashIcon } from "lucide-react"; +// @ts-ignore +import Modal from "react-modal"; type ChatRoom = { menu: string; @@ -35,8 +37,10 @@ type ChatRoom = { export default function Main() { const [chatRooms, setChatRooms] = useState([]); - const [selectedChatRoom, setSelectedChatRoom] = useState(null); const router = useRouter(); + const [isModalOpen, setIsModalOpen] = useState(false); + const [chatToDelete, setChatToDelete] = useState(null); + useEffect(() => { const fetchChatRooms = async () => { @@ -52,19 +56,31 @@ export default function Main() { }, []); const handleChatRoomClick = (chatId: number) => { - setSelectedChatRoom(chatId); router.push(`/chatroom/${chatId}`); }; - const handleDeleteClick = async (chatId: number) => { + const handleDeleteClick = async () => { try { + const chatId = chatToDelete; + console.log(chatId); await axios.delete(`/api/chatroom/${chatId}`); setChatRooms(chatRooms.filter(chat => chat.chatId !== chatId)); + closeModal(); } catch (error) { console.error("Error deleting chat room:", error); } }; + const openModal = (chatId: number) => { + setChatToDelete(chatId); + setIsModalOpen(true); + }; + + const closeModal = () => { + setIsModalOpen(false); + setChatToDelete(null); + }; + return ( <>
@@ -87,7 +103,7 @@ export default function Main() { 채팅방 보기 @@ -103,6 +119,28 @@ export default function Main() {
+ {/* 삭제 확인 모달 */} + + {/* 모달 내부 스타일을 JSX 내에서 설정 */} +
+

정말 삭제하시겠습니까?

+
+ + +
+
+
) @@ -126,4 +164,4 @@ function PlusIcon(props: any) { ) -} +} \ No newline at end of file From 69515b20202a4f7210c50b5bae17db1ff16bcb38 Mon Sep 17 00:00:00 2001 From: rkdgusdnr99 <112935900+rkdgusdnr99@users.noreply.github.com> Date: Sun, 2 Jun 2024 11:09:14 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EC=97=90=20//=20@ts-igno?= =?UTF-8?q?re=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/boards/[boardId]/page.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/boards/[boardId]/page.tsx b/frontend/src/app/boards/[boardId]/page.tsx index e2860468..47788130 100755 --- a/frontend/src/app/boards/[boardId]/page.tsx +++ b/frontend/src/app/boards/[boardId]/page.tsx @@ -28,6 +28,7 @@ import axios from "axios"; import useUserStore from "@/store/useUserStore"; import {DeleteIcon, ScissorsIcon} from "lucide-react"; import Image from "next/image"; +// @ts-ignore import Modal from "react-modal"; type Comment = {