diff --git a/src/pages/Home/components/ShowShareAccessModal.tsx b/src/pages/Home/components/ShowShareAccessModal.tsx index f66576e..e9c1dfa 100644 --- a/src/pages/Home/components/ShowShareAccessModal.tsx +++ b/src/pages/Home/components/ShowShareAccessModal.tsx @@ -61,6 +61,7 @@ const ShowShareAccessModal = ({ onClose }: ShowShareAccessModalProps) => { className="text-gray-80 body-m flex h-10 w-full items-center justify-between gap-1 rounded-lg bg-white p-3" key={proposal.shareProposalId} onClick={() => handleNavigation(proposal.shareProposalId)} + aria-label="따숨님의 공유 요청" >

{proposal.requesterZipCode}님의 공유 요청

diff --git a/src/pages/MyPage/index.tsx b/src/pages/MyPage/index.tsx index 226eb36..de1bc97 100644 --- a/src/pages/MyPage/index.tsx +++ b/src/pages/MyPage/index.tsx @@ -8,6 +8,7 @@ import useMyPageStore from '@/stores/myPageStore'; import { TEMPERATURE_RANGE } from './constants'; import useToastStore from '@/stores/toastStore'; +import ModalOverlay from '@/components/ModalOverlay'; const MyPage = () => { useEffect(() => { @@ -15,7 +16,10 @@ const MyPage = () => { }, []); const { data, fetchMyPageInfo } = useMyPageStore(); + const [isOpenModal, setIsOpenModal] = useState(false); + const [isOpenWarningModal, setIsOpenWarningModal] = useState(false); + const logout = useAuthStore((state) => state.logout); const setToastActive = useToastStore((state) => state.setToastActive); @@ -60,6 +64,19 @@ const MyPage = () => { }} /> )} + + {isOpenWarningModal && ( + setIsOpenWarningModal(false)}> +
+
+
+

경고 규칙

+

3회 경고: 서비스 이용 불가능

+
+
+
+ )} +

{data.zipCode.split('').map((code, index) => ( @@ -109,11 +126,24 @@ const MyPage = () => { {data.email}

+
{ + setIsOpenWarningModal(true); + }} + > +

경고 횟수

+

+ {data.warningCount}회 +

+
+ @@ -125,6 +155,7 @@ const MyPage = () => { onClick={async () => { setIsOpenModal(true); }} + aria-label="탈퇴하기" > 탈퇴하기 diff --git a/src/pages/Share/index.tsx b/src/pages/Share/index.tsx index f2016c6..8a2fddf 100644 --- a/src/pages/Share/index.tsx +++ b/src/pages/Share/index.tsx @@ -71,6 +71,7 @@ const ShareApprovalPage = () => { type="button" className="body-m secondary-btn h-10 flex-1 basis-1/2" onClick={() => handleProposalApproval('reject')} + aria-label="거부하기" > 거부하기 @@ -79,6 +80,7 @@ const ShareApprovalPage = () => { type="button" className="primary-btn body-m h-10 flex-1 basis-1/2" onClick={() => handleProposalApproval('approve')} + aria-label="승인하기" > 승인하기 diff --git a/src/stores/incomingLettersStore.ts b/src/stores/incomingLettersStore.ts index cde60af..6d34c40 100644 --- a/src/stores/incomingLettersStore.ts +++ b/src/stores/incomingLettersStore.ts @@ -51,7 +51,9 @@ export const useIncomingLettersStore = create((set) => ({ data: inProgressLetters, }); - setInterval(() => { + if (inProgressLetters.length === 0) return; + + const intervalId = setInterval(() => { set((state) => { const updatedLetters = state.data.map((letter: IncomingLetters) => { const remainingTime = calculatingRemainingTime(letter.deliveryCompletedAt); @@ -62,6 +64,10 @@ export const useIncomingLettersStore = create((set) => ({ (letter) => letter.remainingTime !== '00:00:00', ); + if (filteredLetters.length === 0) { + clearInterval(intervalId); + } + return { data: filteredLetters, }; diff --git a/src/stores/myPageStore.ts b/src/stores/myPageStore.ts index 59730d0..dda344e 100644 --- a/src/stores/myPageStore.ts +++ b/src/stores/myPageStore.ts @@ -7,6 +7,7 @@ interface MyPageDataStore { temperature: string; social: string; email: string; + warningCount: number; } interface MyPageStore { @@ -21,6 +22,7 @@ const useMyPageStore = create((set) => ({ temperature: '', social: '', email: '', + warningCount: 0, }, message: '', setMyPageData: (newData) => set({ data: newData }),