diff --git a/client/src/App.tsx b/client/src/App.tsx index 974f6db6f..8639ae8d3 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,4 +1,4 @@ -import { lazy } from 'react'; +import { lazy, Suspense } from 'react'; import { BrowserRouter, Route, Routes } from 'react-router-dom'; import theme from '@styles/theme'; import GlobalStyle from '@styles/GlobalStyle'; @@ -19,6 +19,7 @@ import OAuthRedirect from './components/loginPage/OAuthRedirect'; import SessionHandler from '@components/_common/sessionHandler/SessionHandler'; import RouteChangeTracker from '@components/_common/routeChangeTracker/RouteChangeTracker'; import PrivateRouter from '@components/_common/privateRouter/PrivateRouter'; +import { Spinner } from './components/_common/spinner/Spinner.styles'; import { CriticalErrorBoundary } from './components/_common/errorBoundary/CriticalErrorBoundary'; const GoalRoomDashboardPage = lazy( @@ -54,7 +55,11 @@ const App = () => { } /> } + element={ + }> + + + } /> { path='/roadmap/:id/goalroom-create' element={ - + }> + + } /> } + element={ + }> + + + } /> { export const getGoalRoomTodos = async (goalRoomId: string) => { const { data } = await client.get( - API_PATH.GOALROOM_TODOS(goalRoomId) + `${API_PATH.GOALROOM_TODOS(goalRoomId)}/90` ); return data; diff --git a/client/src/components/goalRoomDahsboardPage/goalRoomCertificationFeed/GoalRoomCertificationFeed.tsx b/client/src/components/goalRoomDahsboardPage/goalRoomCertificationFeed/GoalRoomCertificationFeed.tsx index 822054887..69e462ccf 100644 --- a/client/src/components/goalRoomDahsboardPage/goalRoomCertificationFeed/GoalRoomCertificationFeed.tsx +++ b/client/src/components/goalRoomDahsboardPage/goalRoomCertificationFeed/GoalRoomCertificationFeed.tsx @@ -1,17 +1,16 @@ import * as S from './GoalRoomCertificationFeed.styles'; import SVGIcon from '@components/icons/SVGIcon'; -import { GoalRoomBrowseResponse } from '@myTypes/goalRoom/remote'; import { StyledImage } from './GoalRoomCertificationFeed.styles'; import { Dialog } from 'ck-util-components'; import CertificationFeedModal from '@components/goalRoomDahsboardPage/goalRoomCertificationFeed/certificationFeedModal/CertificationFeedModal'; import ToolTip from '@components/_common/toolTip/ToolTip'; +import { useGoalRoomDashboardContext } from '@/context/goalRoomDashboardContext'; +import { useFetchGoalRoom } from '@/hooks/queries/goalRoom'; -type GoalRoomCertificationFeedProps = { - goalRoomData: GoalRoomBrowseResponse; -}; - -const GoalRoomCertificationFeed = ({ goalRoomData }: GoalRoomCertificationFeedProps) => { - const { checkFeeds } = goalRoomData; +const GoalRoomCertificationFeed = () => { + const { goalroomId } = useGoalRoomDashboardContext(); + const { goalRoom } = useFetchGoalRoom(goalroomId); + const { checkFeeds } = goalRoom; return ( diff --git a/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardRoadmap/GoalRoomDashboardRoadmap.tsx b/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardRoadmap/GoalRoomDashboardRoadmap.tsx index 751f320f6..338124aab 100644 --- a/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardRoadmap/GoalRoomDashboardRoadmap.tsx +++ b/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardRoadmap/GoalRoomDashboardRoadmap.tsx @@ -1,17 +1,13 @@ import * as S from './GoalRoomDashboardRoadmap.styles'; -import { useGoalRoomDetail } from '@/hooks/queries/goalRoom'; +import { useFetchGoalRoom, useGoalRoomDetail } from '@/hooks/queries/goalRoom'; import { useGoalRoomDashboardContext } from '@/context/goalRoomDashboardContext'; import { Dialog } from 'ck-util-components'; import SVGIcon from '@components/icons/SVGIcon'; import RoadmapModal from '@components/goalRoomDahsboardPage/goalRoomDahsboardRoadmap/roadmapModal/RoadmapModal'; -import { GoalRoomRecruitmentStatus } from '@myTypes/goalRoom/internal'; -type GoalRoomDashboardRoadmapProps = { - goalRoomStatus: GoalRoomRecruitmentStatus; -}; - -const GoalRoomDashboardRoadmap = ({ goalRoomStatus }: GoalRoomDashboardRoadmapProps) => { +const GoalRoomDashboardRoadmap = () => { const { goalroomId } = useGoalRoomDashboardContext(); + const { goalRoom } = useFetchGoalRoom(goalroomId); const { goalRoomInfo } = useGoalRoomDetail(Number(goalroomId)); return ( @@ -49,7 +45,7 @@ const GoalRoomDashboardRoadmap = ({ goalRoomStatus }: GoalRoomDashboardRoadmapPr - <>{goalRoomStatus === 'RUNNING' && } + <>{goalRoom.status === 'RUNNING' && } ); diff --git a/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardTodo/GoalRoomDashboardTodo.tsx b/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardTodo/GoalRoomDashboardTodo.tsx index 92932ddd6..8aa5cc45d 100644 --- a/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardTodo/GoalRoomDashboardTodo.tsx +++ b/client/src/components/goalRoomDahsboardPage/goalRoomDahsboardTodo/GoalRoomDashboardTodo.tsx @@ -1,21 +1,20 @@ import * as S from './GoalRoomDashboardTodo.styles'; import SVGIcon from '@components/icons/SVGIcon'; -import { GoalRoomBrowseResponse } from '@myTypes/goalRoom/remote'; import SingleTodo from '@components/goalRoomDahsboardPage/goalRoomDahsboardTodo/singleTodo/SingleTodo'; import { Dialog } from 'ck-util-components'; import TodoModal from '@components/goalRoomDahsboardPage/goalRoomDahsboardTodo/todoModal/TodoModal'; import ToolTip from '@components/_common/toolTip/ToolTip'; +import { useGoalRoomDashboardContext } from '@/context/goalRoomDashboardContext'; +import { useFetchGoalRoom } from '@/hooks/queries/goalRoom'; type GoalRoomDashboardTodoProps = { - goalRoomData: GoalRoomBrowseResponse; isLeader: boolean; }; -const GoalRoomDashboardTodo = ({ - goalRoomData, - isLeader, -}: GoalRoomDashboardTodoProps) => { - const { goalRoomTodos } = goalRoomData; +const GoalRoomDashboardTodo = ({ isLeader }: GoalRoomDashboardTodoProps) => { + const { goalroomId } = useGoalRoomDashboardContext(); + const { goalRoom } = useFetchGoalRoom(goalroomId); + const { goalRoomTodos } = goalRoom; return ( @@ -49,7 +48,7 @@ const GoalRoomDashboardTodo = ({ - + diff --git a/client/src/components/goalRoomDahsboardPage/goalRoomDashboardContent/GoalRoomDashboardContent.tsx b/client/src/components/goalRoomDahsboardPage/goalRoomDashboardContent/GoalRoomDashboardContent.tsx index 0ae81b7ba..46b71c53b 100644 --- a/client/src/components/goalRoomDahsboardPage/goalRoomDashboardContent/GoalRoomDashboardContent.tsx +++ b/client/src/components/goalRoomDahsboardPage/goalRoomDashboardContent/GoalRoomDashboardContent.tsx @@ -26,27 +26,25 @@ const GoalRoomDashboardContent = () => { const isLeader = userInfo.id === goalRoom.leaderId; return ( - <> - }> - - - - - - - - - {goalRoom.status !== 'RUNNING' && ( - - )} - - - + }> + + + + + + + + + {goalRoom.status !== 'RUNNING' && ( + + )} + + ); }; diff --git a/client/src/components/goalRoomDahsboardPage/goalRoomDashboardHeader/GoalRoomDashboardHeader.tsx b/client/src/components/goalRoomDahsboardPage/goalRoomDashboardHeader/GoalRoomDashboardHeader.tsx index 83379906c..6f3d19528 100644 --- a/client/src/components/goalRoomDahsboardPage/goalRoomDashboardHeader/GoalRoomDashboardHeader.tsx +++ b/client/src/components/goalRoomDahsboardPage/goalRoomDashboardHeader/GoalRoomDashboardHeader.tsx @@ -1,27 +1,21 @@ import SVGIcon from '@components/icons/SVGIcon'; - import * as S from './GoalRoomDashboardHeader.styles'; import recruitmentStatus from '@constants/goalRoom/recruitmentStatus'; -import { GoalRoomBrowseResponse } from '@myTypes/goalRoom/remote'; import { Dialog } from 'ck-util-components'; import GoalRoomParticipantsListModal from '@components/goalRoomDahsboardPage/goalRoomDashboardHeader/goalRoomParticipantsListModal/GoalRoomParticipantsListModal'; import isTodayOrAfter from '@utils/_common/isTodayOrAfter'; import { useGoalRoomDashboardContext } from '@/context/goalRoomDashboardContext'; -import { useStartGoalRoom } from '@hooks/queries/goalRoom'; +import { useFetchGoalRoom, useStartGoalRoom } from '@hooks/queries/goalRoom'; type GoalRoomDashboardHeaderProps = { - goalRoomData: GoalRoomBrowseResponse; isLeader: boolean; }; -const GoalRoomDashboardHeader = ({ - goalRoomData, - isLeader, -}: GoalRoomDashboardHeaderProps) => { - const { name, status, currentMemberCount, limitedMemberCount, startDate, endDate } = - goalRoomData; - +const GoalRoomDashboardHeader = ({ isLeader }: GoalRoomDashboardHeaderProps) => { const { goalroomId } = useGoalRoomDashboardContext(); + const { goalRoom } = useFetchGoalRoom(goalroomId); + const { name, status, currentMemberCount, limitedMemberCount, startDate, endDate } = + goalRoom; const { startGoalRoom } = useStartGoalRoom(goalroomId); diff --git a/client/src/pages/goalRoomDashboardPage/GoalRoomDashboardPage.tsx b/client/src/pages/goalRoomDashboardPage/GoalRoomDashboardPage.tsx index 996818869..c78eb2bd9 100644 --- a/client/src/pages/goalRoomDashboardPage/GoalRoomDashboardPage.tsx +++ b/client/src/pages/goalRoomDashboardPage/GoalRoomDashboardPage.tsx @@ -1,15 +1,14 @@ import GoalRoomDashboardContent from '@components/goalRoomDahsboardPage/goalRoomDashboardContent/GoalRoomDashboardContent'; import GoalRoomDashboardProvider from '@components/_providers/GoalRoomDashboardProvider'; -import { Suspense } from 'react'; -import Spinner from '@components/_common/spinner/Spinner'; +import AsyncBoundary from '@/components/_common/errorBoundary/AsyncBoundary'; const GoalRoomDashboardPage = () => { return ( - }> + - + ); };