diff --git a/components/home/MovieCard.tsx b/components/home/MovieCard.tsx index ff8a13f..471b744 100644 --- a/components/home/MovieCard.tsx +++ b/components/home/MovieCard.tsx @@ -8,6 +8,7 @@ import Image from 'next/image'; import Link from 'next/link'; import { Card } from '@/components/ui/Card'; import { Icons } from '@/components/ui/Icon'; +import { getOptimizedImageUrl } from '@/lib/utils/image-utils'; interface DoubanMovie { id: string; @@ -39,7 +40,7 @@ export const MovieCard = memo(function MovieCard({ movie, onMovieClick }: MovieC
{movie.title}; @@ -39,25 +40,14 @@ export function useMobilePlaybackControls({ isDraggingProgressRef, isTogglingRef }: UseMobilePlaybackProps) { - const togglePlay = useCallback(async () => { - if (!videoRef.current || isTogglingRef.current) return; - isTogglingRef.current = true; - - try { - if (isPlaying) { - videoRef.current.pause(); - } else { - setShowMoreMenu(false); - setShowVolumeMenu(false); - setShowSpeedMenu(false); - await videoRef.current.play(); - } - } catch (error) { - console.warn('Play/pause error:', error); - } finally { - isTogglingRef.current = false; - } - }, [isPlaying, videoRef, isTogglingRef, setShowMoreMenu, setShowVolumeMenu, setShowSpeedMenu]); + const togglePlay = useMobileTogglePlay({ + videoRef, + isPlaying, + isTogglingRef, + setShowMoreMenu, + setShowVolumeMenu, + setShowSpeedMenu + }); const handlePlay = useCallback(() => setIsPlaying(true), [setIsPlaying]); const handlePause = useCallback(() => setIsPlaying(false), [setIsPlaying]); diff --git a/components/player/hooks/mobile/useMobileTogglePlay.ts b/components/player/hooks/mobile/useMobileTogglePlay.ts new file mode 100644 index 0000000..b0acf2c --- /dev/null +++ b/components/player/hooks/mobile/useMobileTogglePlay.ts @@ -0,0 +1,39 @@ +import { useCallback } from 'react'; + +interface UseMobileTogglePlayProps { + videoRef: React.RefObject; + isPlaying: boolean; + isTogglingRef: React.MutableRefObject; + setShowMoreMenu: (show: boolean) => void; + setShowVolumeMenu: (show: boolean) => void; + setShowSpeedMenu: (show: boolean) => void; +} + +export function useMobileTogglePlay({ + videoRef, + isPlaying, + isTogglingRef, + setShowMoreMenu, + setShowVolumeMenu, + setShowSpeedMenu +}: UseMobileTogglePlayProps) { + return useCallback(async () => { + if (!videoRef.current || isTogglingRef.current) return; + isTogglingRef.current = true; + + try { + if (isPlaying) { + videoRef.current.pause(); + } else { + setShowMoreMenu(false); + setShowVolumeMenu(false); + setShowSpeedMenu(false); + await videoRef.current.play(); + } + } catch (error) { + console.warn('Play/pause error:', error); + } finally { + isTogglingRef.current = false; + } + }, [isPlaying, videoRef, isTogglingRef, setShowMoreMenu, setShowVolumeMenu, setShowSpeedMenu]); +} diff --git a/components/search/VideoCard.tsx b/components/search/VideoCard.tsx index bc53fad..61258b8 100644 --- a/components/search/VideoCard.tsx +++ b/components/search/VideoCard.tsx @@ -7,6 +7,7 @@ import { Card } from '@/components/ui/Card'; import { Badge } from '@/components/ui/Badge'; import { Icons } from '@/components/ui/Icon'; import { LatencyBadge } from '@/components/ui/LatencyBadge'; +import { getOptimizedImageUrl } from '@/lib/utils/image-utils'; import { Video } from '@/lib/types'; @@ -54,7 +55,7 @@ export const VideoCard = memo(({
{video.vod_pic ? (