refactor: Improve error handling in delete operation

This commit is contained in:
Peifan Li
2025-12-28 14:19:22 -05:00
parent fa64fe98f9
commit 700238796a

View File

@@ -338,7 +338,12 @@ const VideoPlayer: React.FC = () => {
const executeDelete = async () => { const executeDelete = async () => {
if (!id) return; if (!id) return;
await deleteMutation.mutateAsync(id); isDeletingRef.current = true;
try {
await deleteMutation.mutateAsync(id);
} catch (error) {
isDeletingRef.current = false;
}
}; };
const handleDelete = () => { const handleDelete = () => {
@@ -531,6 +536,7 @@ const VideoPlayer: React.FC = () => {
const [hasViewed, setHasViewed] = useState<boolean>(false); const [hasViewed, setHasViewed] = useState<boolean>(false);
const lastProgressSave = useRef<number>(0); const lastProgressSave = useRef<number>(0);
const currentTimeRef = useRef<number>(0); const currentTimeRef = useRef<number>(0);
const isDeletingRef = useRef<boolean>(false);
// Reset hasViewed when video changes // Reset hasViewed when video changes
useEffect(() => { useEffect(() => {
@@ -541,7 +547,7 @@ const VideoPlayer: React.FC = () => {
// Save progress on unmount // Save progress on unmount
useEffect(() => { useEffect(() => {
return () => { return () => {
if (id && currentTimeRef.current > 0) { if (id && currentTimeRef.current > 0 && !isDeletingRef.current) {
axios.put(`${API_URL}/videos/${id}/progress`, { progress: Math.floor(currentTimeRef.current) }) axios.put(`${API_URL}/videos/${id}/progress`, { progress: Math.floor(currentTimeRef.current) })
.catch(err => console.error('Error saving progress on unmount:', err)); .catch(err => console.error('Error saving progress on unmount:', err));
} }