From 8ecc4e6263ec9a869cb8d674fd23cc2c284c3769 Mon Sep 17 00:00:00 2001 From: caadiq Date: Sun, 8 Feb 2026 22:34:10 +0900 Subject: [PATCH] =?UTF-8?q?feat(mobile):=20=EC=98=88=EC=A0=95=EB=90=9C=20Y?= =?UTF-8?q?ouTube=20=EC=98=81=EC=83=81=20=EC=83=81=EC=84=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PC와 동일하게 videoId가 없는 예정 일정에 대한 UI 추가: - MobileScheduledPlaceholder 컴포넌트 (배너 이미지/패턴 배경) - "예정" 배지 표시 - 예정 일정일 때 "YouTube에서 보기" 버튼 숨김 Co-Authored-By: Claude Opus 4.5 --- .../pages/mobile/schedule/ScheduleDetail.jsx | 101 +++++++++++++----- 1 file changed, 73 insertions(+), 28 deletions(-) diff --git a/frontend/src/pages/mobile/schedule/ScheduleDetail.jsx b/frontend/src/pages/mobile/schedule/ScheduleDetail.jsx index 91f999d..2a23863 100644 --- a/frontend/src/pages/mobile/schedule/ScheduleDetail.jsx +++ b/frontend/src/pages/mobile/schedule/ScheduleDetail.jsx @@ -110,33 +110,69 @@ function useFullscreenOrientation(isShorts) { }, [isShorts]); } +/** + * Mobile 예정 일정 Placeholder 컴포넌트 + */ +function MobileScheduledPlaceholder({ bannerUrl }) { + return ( +
+ {/* 배경: 배너 이미지 또는 패턴 */} + {bannerUrl ? ( +
+
+
+ ) : ( +
+
+
+ )} + + {/* 하단 텍스트 */} +
+
+ + 업로드 예정 +
+
+
+ ); +} + /** * Mobile 유튜브 섹션 */ function MobileYoutubeSection({ schedule }) { const videoId = schedule.videoId; const isShorts = schedule.videoType === 'shorts'; + const isScheduled = !videoId; // videoId가 없으면 예정 일정 // 숏츠가 아닐 때만 가로 회전 (숏츠는 전체화면에서 세로 유지) useFullscreenOrientation(isShorts); const members = schedule.members || []; const isFullGroup = members.length === 5; - if (!videoId) return null; - return (
- {/* 영상 임베드 - 숏츠도 가로 비율로 표시 (전체화면에서는 유튜브가 세로로 처리) */} + {/* 영상 임베드 또는 예정 Placeholder */} -
-