Skip to content

Commit

Permalink
Merge pull request #1075 from woowacourse-teams/FE/dev
Browse files Browse the repository at this point in the history
[FE] 🚀 타이머 시간 변경 오류 해결
  • Loading branch information
anttiey authored Feb 4, 2025
2 parents 42865e9 + 4dd607d commit f5d0d93
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
10 changes: 7 additions & 3 deletions frontend/src/components/PairRoom/TimerCard/TimerCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ interface TimerCardProps {
}

const TimerCard = ({ defaultTime, defaultTimeLeft, onTimerStop }: TimerCardProps) => {
const { timeLeft, isActive, handleStart, handlePause } = useTimer(defaultTime, defaultTimeLeft, onTimerStop);
const { duration, timeLeft, isActive, handleStart, handlePause } = useTimer(
defaultTime,
defaultTimeLeft,
onTimerStop,
);

const timeLeftRef = useRef(timeLeft);
timeLeftRef.current = timeLeft;
Expand All @@ -38,12 +42,12 @@ const TimerCard = ({ defaultTime, defaultTimeLeft, onTimerStop }: TimerCardProps
isActive={isActive}
minutes={minutes}
seconds={seconds}
progress={(timeLeft / defaultTime) * 100}
progress={(timeLeft / duration) * 100}
handleStart={handleStart}
handlePause={handlePause}
/>
<S.ProgressBar
$progress={(timeLeft / defaultTime) * 100}
$progress={(timeLeft / duration) * 100}
role="timer"
aria-label={`현재 남은 시간은 ${minutes}${seconds}초 입니다.`}
>
Expand Down
22 changes: 12 additions & 10 deletions frontend/src/hooks/PairRoom/useTimer.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import { useState, useRef, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';

import { useQueryClient } from '@tanstack/react-query';

import { AlarmSound } from '@/assets';

import useSocketStore from '@/stores/socketStore';
Expand All @@ -13,8 +11,6 @@ import { subscribeTopic } from '@/apis/websocket/websocket';

import useNotification from '@/hooks/PairRoom/useNotification';

import { QUERY_KEYS } from '@/constants/queryKeys';

enum TimerStatus {
COMPLETE = 'complete',
START = 'start',
Expand All @@ -25,11 +21,11 @@ enum TimerStatus {

const useTimer = (defaultTime: number, defaultTimeLeft: number, onTimerStop: () => void) => {
const navigate = useNavigate();
const queryClient = useQueryClient();

const { client, isConnected, accessCode } = useSocketStore();
const { addToast } = useToastStore();

const [duration, setDuration] = useState(defaultTime);
const [timeLeft, setTimeLeft] = useState(defaultTimeLeft);
const [isActive, setIsActive] = useState(false);

Expand Down Expand Up @@ -67,7 +63,7 @@ const useTimer = (defaultTime: number, defaultTimeLeft: number, onTimerStop: ()
setTimeLeft(timeLeft);
};

const handleTimerStatusEvent = (status: TimerStatus) => {
const handleTimerStatusEvent = (status: TimerStatus, data: number | null) => {
switch (status) {
case TimerStatus.COMPLETE:
navigate(`/room/${accessCode}/retrospectForm`, { state: { valid: true } });
Expand All @@ -86,8 +82,11 @@ const useTimer = (defaultTime: number, defaultTimeLeft: number, onTimerStop: ()
break;

case TimerStatus.UPDATE:
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.GET_PAIR_ROOM_TIMER] });
addToast({ status: 'WARNING', message: '타이머 시간이 변경되었습니다.' });
if (data) {
setDuration(data);
setTimeLeft(data);
addToast({ status: 'WARNING', message: '타이머 시간이 변경되었습니다.' });
}
break;

default:
Expand All @@ -101,8 +100,10 @@ const useTimer = (defaultTime: number, defaultTimeLeft: number, onTimerStop: ()
subscribeTopic<{ data: number }>(client, `/topic/${accessCode}/timer`, (body) => handleTimerEvent(body.data));

// 타이머 상태
subscribeTopic<{ data: TimerStatus }>(client, `/topic/${accessCode}/timer/status`, (body) =>
handleTimerStatusEvent(body.data),
subscribeTopic<{ status: TimerStatus; data: number | null }>(
client,
`/topic/${accessCode}/timer/status`,
(body) => handleTimerStatusEvent(body.status, body.data),
);
}

Expand All @@ -115,6 +116,7 @@ const useTimer = (defaultTime: number, defaultTimeLeft: number, onTimerStop: ()
}, [client]);

return {
duration,
timeLeft,
isActive,
handleStart,
Expand Down

0 comments on commit f5d0d93

Please sign in to comment.