From aad4ee632ae4d5e9276d7ea97848e85768c216be Mon Sep 17 00:00:00 2001 From: Dam <60846068+j2h30728@users.noreply.github.com> Date: Mon, 15 Jul 2024 02:14:15 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B0=98=EB=A0=A4=EB=8F=99=EB=AC=BC=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=20=ED=9A=9F=EC=88=98=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EB=8F=84=20=EB=8F=99=EC=9D=BC=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20api=20errorboundary=EB=A5=BC=20=EC=A0=81=EC=9A=A9?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EA=B2=8C=20=20suspense=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9[#82]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../verification/api/useVerificationCount.ts | 4 +- src/pages/Home/HomePage.tsx | 80 +++++++++---------- src/pages/setting/SettingPage.tsx | 9 +-- .../verification/ui/VerificationField.tsx | 33 +++++--- 4 files changed, 68 insertions(+), 58 deletions(-) diff --git a/src/entities/verification/api/useVerificationCount.ts b/src/entities/verification/api/useVerificationCount.ts index d73ce71..2bf89fc 100644 --- a/src/entities/verification/api/useVerificationCount.ts +++ b/src/entities/verification/api/useVerificationCount.ts @@ -1,10 +1,10 @@ -import { useQuery } from '@tanstack/react-query'; +import { useSuspenseQuery } from '@tanstack/react-query'; import { verificationKey } from '../../../shared/lib/query/queryKey'; import verificationAPI from './verificationAPI'; const useVerificationCount = ({ petId }: { petId: string }) => { - return useQuery({ + return useSuspenseQuery({ queryKey: verificationKey.pet(petId), queryFn: () => verificationAPI.getVerificationCount(petId), }); diff --git a/src/pages/Home/HomePage.tsx b/src/pages/Home/HomePage.tsx index ce0c534..5083551 100644 --- a/src/pages/Home/HomePage.tsx +++ b/src/pages/Home/HomePage.tsx @@ -1,58 +1,56 @@ +import { Suspense } from 'react'; + import ROUTE_PATH from '../../shared/constants/routePath'; import { Layout } from '../../shared/ui'; import { Bath, Meal, Treats, Walk } from '../../shared/ui/Icons'; import VerificationButton from '../../widgets/verification/ui/VerificationButton'; import VerificationField from '../../widgets/verification/ui/VerificationField'; import { VERIFICATION } from '../../shared/constants/verification'; -import { useVerificationCount } from '../../entities/verification'; +import Spinner from '../../shared/ui/Spinner'; import * as S from './HomePage.styled'; const HomePage = () => { - const { data, isLoading } = useVerificationCount({ petId: '1' }); - return ( - {isLoading ? ( -
로딩
- ) : ( - - - - - } - /> - } - /> - } - /> - } - /> - + + }> + + + + + } + /> + } + /> + } + /> } /> - - - )} + + + +
); }; diff --git a/src/pages/setting/SettingPage.tsx b/src/pages/setting/SettingPage.tsx index 19ec76f..b4e1b02 100644 --- a/src/pages/setting/SettingPage.tsx +++ b/src/pages/setting/SettingPage.tsx @@ -1,5 +1,6 @@ import { Suspense, useState } from 'react'; import { useNavigate } from 'react-router-dom'; +import Spinner from '../../shared/ui/Spinner'; import { Layout } from '../../shared/ui'; import { Message, RightArrowIcon } from '../../shared/ui/Icons'; @@ -8,7 +9,6 @@ import ROUTE_PATH from '../../shared/constants/routePath'; import FamilyItemList from '../../widgets/family/ui/FamilyItemList'; import Switch from '../../shared/ui/Switch'; import useFamilyMembers from '../../entities/family/api/useFamilyMembers'; -import useVerificationCount from '../../entities/verification/api/useVerificationCount'; import UserImage from '../../shared/ui/UserImage'; import * as S from './SettingPage.styled'; @@ -17,9 +17,6 @@ const SettingPage = () => { const navigate = useNavigate(); const [isAlarm, setIsAlarm] = useState(true); const { data: familyMembers } = useFamilyMembers({ petId: '1' }); - const { data: verificationCount } = useVerificationCount({ - petId: '1', - }); return ( @@ -27,7 +24,9 @@ const SettingPage = () => { - + }> + + 월이의 가족 diff --git a/src/widgets/verification/ui/VerificationField.tsx b/src/widgets/verification/ui/VerificationField.tsx index c71b7e9..bda3bae 100644 --- a/src/widgets/verification/ui/VerificationField.tsx +++ b/src/widgets/verification/ui/VerificationField.tsx @@ -1,29 +1,42 @@ import { Female, Male } from '../../../shared/ui/Icons'; import UserImage from '../../../shared/ui/UserImage'; import getAge from '../../../shared/lib/getAge'; -import { VerificationCount } from '../../../shared/types/verification'; import { GENDER } from '../../../shared/constants/pet'; import * as S from './VerificationField.styled'; +import { useVerificationCount } from '../../../entities/verification'; -const VerificationField = ({ pet }: { pet?: VerificationCount }) => { +const VerificationField = ({ petId }: { petId: string }) => { + const { data: verificationCount } = useVerificationCount({ + petId, + }); return ( - - {pet?.name} + + {verificationCount.name} - {pet?.birthYear ? `${getAge(pet.birthYear)}살` : ''} - {pet?.gender === GENDER.MALE ? : } + {verificationCount.birthYear + ? `${getAge(verificationCount.birthYear)}살` + : ''} + {verificationCount.gender === GENDER.MALE ? : }

오늘의 횟수

- 산책 {pet?.verification.walkCount}번 - 식사 {pet?.verification.walkCount}번 - 간식 {pet?.verification.treatsCount}번 - 목욕 {pet?.verification.walkCount}번 + + 산책 {verificationCount.verification.walkCount}번 + + + 식사 {verificationCount.verification.walkCount}번 + + + 간식 {verificationCount.verification.treatsCount}번 + + + 목욕 {verificationCount.verification.walkCount}번 +