[fix] 동소한 공연 시간표 탭 UI/데이터 개선 및 웹뷰 대응#1298
Conversation
- 각 곡 항목에서 인원수 표기 제거 - 네오쇼크 곡 구분자 '/' → '-' 통일
- '동아리시간표' → '버스킹 시간표' 탭 라벨 변경 - 웹뷰 환경에서 Footer 미노출 처리
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning
|
| 계층 / 파일(들) | 요약 |
|---|---|
웹뷰 조건부 렌더링 frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.styles.ts |
TabWrapper에 선택적 $webview 속성 추가하여 웹뷰 상태에 따라 조건부로 padding-top을 적용합니다. |
UI 레이아웃 및 탭 레이블 변경 frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.tsx |
Footer를 웹뷰 상태에서만 숨기도록 조건부 렌더링하고, TabWrapper에 $webview 속성을 전달하며, CLUB_TIMETABLE 탭 레이블을 "동아리시간표"에서 "버스킹 시간표"로 변경합니다. |
공연 데이터 표준화 frontend/src/pages/FestivalPage/data/performances.ts |
여러 공연의 곡 항목에서 참여자 수 표기를 제거하고 'title - artist' 형식으로 통일합니다. |
코드 리뷰 난이도
🎯 2 (Simple) | ⏱️ ~10분
관련 가능성 있는 PR
- [feature] 웹뷰 감지 로직 추가 및 웹뷰용 UI 조건부 처리 #828: 동일한 웹뷰 감지 패턴 구현 — styled 래퍼 컴포넌트에 webview 속성 추가 및 isInAppWebView 기반으로 header/footer 조건부 숨김
- [fix] 동소한 페이지 디자인 수정, 팝업 이미지 최적화 및 이벤트 트래킹 추가 #1289: 동일한 파일의 TabWrapper styled 컴포넌트 수정 — 이전 PR에서 TabWrapper 추가, 이번 PR에서
$webview속성 지원 추가
제안 라벨
✨ Feature, 💻 FE
제안 리뷰어
- lepitaaar
- suhyun113
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | PR 제목이 주요 변경 사항을 명확하게 요약합니다: UI/데이터 개선 및 웹뷰 대응이 모두 포함되어 있습니다. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
- 📝 Generate docstrings (stacked PR)
- 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Post copyable unit tests in a comment
- Commit unit tests in branch
feature/#1297-update-performance-schedule-ui-MOA-726
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
🎨 UI 변경사항을 확인해주세요
31개 스토리 변경 · 전체 58개 스토리 · 23개 컴포넌트 |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.tsx (1)
63-90:isInAppWebView()결과를 한 번만 계산해 재사용하면 더 읽기 쉽습니다.Line [63], Line [90]에서 동일 함수를 반복 호출하고 있어, 지역 상수로 캐싱하면 JSX가 더 간결해집니다.
제안 코드
const IntroductionPage = () => { + const isWebView = isInAppWebView(); useTrackPageView(PAGE_VIEW.FESTIVAL_INTRODUCTION_PAGE); const trackEvent = useMixpanelTrack(); @@ - {!isInAppWebView() && <Filter alwaysVisible />} - <Styled.TabWrapper $webview={isInAppWebView()}> + {!isWebView && <Filter alwaysVisible />} + <Styled.TabWrapper $webview={isWebView}> @@ - {!isInAppWebView() && <Footer />} + {!isWebView && <Footer />}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.tsx` around lines 63 - 90, Compute isInAppWebView() once and reuse the result: call isInAppWebView() into a local const (e.g., const inAppWebView = isInAppWebView()) at the top of the component, then replace the repeated calls in Styled.TabWrapper's $webview prop and the final conditional rendering of Footer with that const; update references to use inAppWebView so JSX is simpler and avoids multiple calls to isInAppWebView().frontend/src/pages/FestivalPage/data/performances.ts (1)
125-137: 곡/아티스트 표기 순서를 한 방향으로 맞추는 것을 권장합니다.Line [125]-Line [137]은 인원수 제거는 잘 되었지만, 다른 클럽 데이터와 비교 시
곡명 - 아티스트/아티스트 - 곡명순서가 혼재되어 표시 규칙이 흔들릴 수 있습니다. 렌더링 결과 일관성을 위해 한 포맷으로 통일하는 편이 좋겠습니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/src/pages/FestivalPage/data/performances.ts` around lines 125 - 137, The list of performance strings in the performances array contains mixed ordering of "song - artist" and "artist - song"; normalize them to a single format (recommend "artist - song") by editing the entries in the array (the list containing 'Locking', '르세라핌 - SPAGHETTI', '엔하이픈 - No Doubt', etc.) so that any items currently in "곡명 - 아티스트" order are rewritten to "아티스트 - 곡명" (leave genre-only entries like 'Locking', 'B-boy', 'Waacking', 'HipHop' as-is); update strings such as 'XXL - 영파씨 (BEBE choreo)' and 'All genre - JABBERLOOP' to match the chosen "artist - song" convention for consistent rendering.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@frontend/src/pages/FestivalPage/data/performances.ts`:
- Around line 125-137: The list of performance strings in the performances array
contains mixed ordering of "song - artist" and "artist - song"; normalize them
to a single format (recommend "artist - song") by editing the entries in the
array (the list containing 'Locking', '르세라핌 - SPAGHETTI', '엔하이픈 - No Doubt',
etc.) so that any items currently in "곡명 - 아티스트" order are rewritten to "아티스트 -
곡명" (leave genre-only entries like 'Locking', 'B-boy', 'Waacking', 'HipHop'
as-is); update strings such as 'XXL - 영파씨 (BEBE choreo)' and 'All genre -
JABBERLOOP' to match the chosen "artist - song" convention for consistent
rendering.
In `@frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.tsx`:
- Around line 63-90: Compute isInAppWebView() once and reuse the result: call
isInAppWebView() into a local const (e.g., const inAppWebView =
isInAppWebView()) at the top of the component, then replace the repeated calls
in Styled.TabWrapper's $webview prop and the final conditional rendering of
Footer with that const; update references to use inAppWebView so JSX is simpler
and avoids multiple calls to isInAppWebView().
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
frontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.styles.tsfrontend/src/pages/FestivalPage/IntroductionPage/IntroductionPage.tsxfrontend/src/pages/FestivalPage/data/performances.ts
- 펼칠 때 height + opacity 트랜지션 적용 - 펼침 상태에 따라 SongArea border-radius 전환 (20px -> 8px)
#️⃣연관된 이슈
#1297
📝작업 내용
총동아리 연합회의 피드백에 맞춰서 개선한 동소한 공연 시간표 탭 관련 UI/데이터 개선 작업입니다.
탭 라벨 변경
공연 데이터 형식 통일
- 5명,(5명))곡명 / 아티스트→곡명 - 아티스트로 통일웹뷰 환경 개선
공연 카드 애니메이션 개선
카드 펼침/닫힘 시 framer-motion height + opacity 트랜지션 적용
펼침 상태에 따라 SongArea border-radius 전환 (20px → 8px)
🫡 참고사항
isInAppWebView()유틸을 그대로 활용했습니다.TabWrapper에$webviewprop으로 조건부 적용했습니다.Summary by CodeRabbit
Bug Fixes
Style
New Features