refactor(modal): V2 확인 모달 사용처를 교체한다
This commit is contained in:
@@ -110,6 +110,99 @@ Figma 디자인 그대로 layout을 구성한다.
|
||||
|
||||
---
|
||||
|
||||
## 12. Addendum: V2 사용처 `dialog_v2_modal` 적용 조사
|
||||
2026-07-08 후속 요청 범위는 구현 없이 `kr.co.vividnext.sodalive.v2` 하위에서 modal/dialog 계열을 사용하는 위치를 찾고, 이후 `dialog_v2_modal` 기반 `V2ModalDialog`로 바꿀 대상을 문서화하는 것이다.
|
||||
|
||||
### 추가 Problem
|
||||
- `V2ModalDialog`와 `dialog_v2_modal.xml`은 구현되어 있지만, V2 화면 일부는 여전히 레거시 `SodaDialog`, 기본 `AlertDialog.Builder`, 레거시 report/payment/password dialog를 호출한다.
|
||||
- V2 화면의 확인/취소형 모달이 서로 다른 layout과 스타일을 사용하면 V2 디자인 일관성이 깨진다.
|
||||
- 레거시 다이얼로그 클래스 자체는 다른 레거시 화면에서도 사용되므로, 저장소 원칙상 레거시 파일을 직접 수정하지 않고 V2 호출부에서 대체해야 한다.
|
||||
|
||||
### 추가 Goals
|
||||
- V2 패키지 안의 확인/취소형 모달은 `V2ModalDialog`를 사용해 `dialog_v2_modal` 디자인을 적용한다.
|
||||
- title/desc/confirm/cancel만 필요한 사용처는 우선 교체 대상으로 삼는다.
|
||||
- 입력 필드, 라디오 목록, 이미지, 토글, BottomSheet, PopupWindow 등 `V2ModalDialog`의 현재 API로 표현할 수 없는 UI는 직접 교체하지 않고 별도 설계 대상으로 분리한다.
|
||||
- 후속 구현 시 기존 문자열, confirm/cancel 콜백, `show(width)` 폭 계산, dismiss 후 action 실행 흐름을 유지한다.
|
||||
|
||||
### 추가 Non-Goals
|
||||
- 이번 조사 단계에서는 Kotlin/XML 구현을 변경하지 않는다.
|
||||
- `kr.co.vividnext.sodalive.base.SodaDialog`, `kr.co.vividnext.sodalive.report.*Dialog`, `kr.co.vividnext.sodalive.live.room.*Dialog` 같은 레거시 공용 클래스를 직접 수정하지 않는다.
|
||||
- `LoadingDialog`, `Toast`, 정렬/더보기용 `PopupWindow`, 메뉴성 BottomSheet는 확인형 모달 교체 범위에서 제외한다.
|
||||
- 입력/라디오/이미지/토글 UI를 `V2ModalDialog`에 무리하게 넣기 위한 API 확장은 이번 문서 단계에서 결정하지 않는다.
|
||||
|
||||
### 바로 교체 가능한 후보
|
||||
아래 항목은 title/desc/확인/취소 콜백 구조라 현 `V2ModalDialog`로 직접 교체할 수 있다.
|
||||
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuard.kt:49`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: 성인 인증 필요 안내
|
||||
- 후속 변경: `V2ModalDialog`로 교체하고 `Gravity` import 제거 확인
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/live/onair/HomeOnAirLiveActivity.kt:186`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: 성인 인증 필요 안내
|
||||
- 후속 변경: `V2ModalDialog`로 교체하고 `Gravity` import 제거 확인
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:386`
|
||||
- 현재: `AlertDialog.Builder`
|
||||
- 용도: 사용자 차단 확인
|
||||
- 후속 변경: `setTitle`/`setMessage`/positive/negative 버튼을 `V2ModalDialog`의 title/desc/confirm/cancel로 매핑
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:403`
|
||||
- 현재: `ProfileReportDialog`
|
||||
- 용도: 프로필 사진 신고 확인
|
||||
- 후속 변경: `dialog_profile_report_title`, `dialog_profile_report_notice`, `report_button`, `cancel`을 `V2ModalDialog`로 매핑
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:607`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: FanTalk 삭제 확인
|
||||
- 후속 변경: 기존 삭제 confirm 콜백 유지
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:643`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: 커뮤니티 게시글 삭제 확인
|
||||
- 후속 변경: 기존 삭제 confirm 콜백 유지
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:980`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: 성인 인증 필요 안내
|
||||
- 후속 변경: `V2ModalDialog`로 교체하고 `Gravity` import 제거 확인
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/write/CreatorChannelFanTalkWriteActivity.kt:124`
|
||||
- 현재: `SodaDialog`
|
||||
- 용도: 글 작성 취소/이탈 확인
|
||||
- 후속 변경: `V2ModalDialog`로 교체하고 `Gravity` import 제거 확인
|
||||
|
||||
### 추가 설계가 필요한 후보
|
||||
아래 항목은 dialog/modal 계열이지만 현 `V2ModalDialog` API가 제공하지 않는 입력, 라디오, 이미지, 토글, BottomSheet 동작을 포함한다. `dialog_v2_modal` 적용 여부는 별도 V2 전용 컴포넌트 또는 `V2ModalDialog` API 확장 결정을 먼저 해야 한다.
|
||||
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2Activity.kt:162`, `:530`
|
||||
- `NotificationSettingsDialog`: 알림 토글 3개가 필요하다.
|
||||
- `EventPopupDialogFragment`: 이미지형 이벤트 BottomSheet다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/live/onair/HomeOnAirLiveActivity.kt:243`, `:280`
|
||||
- `LiveRoomPasswordDialog`: 비밀번호 입력과 금액 표시가 필요하다.
|
||||
- `LivePaymentDialog`: 유료 라이브 결제 확인이며, 시작/현재 시각 안내 영역이 조건부로 표시된다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt:397`, `:898`
|
||||
- `UserReportDialog`: 신고 사유 `RadioGroup` 선택값이 필요하다.
|
||||
- `LiveRoomDonationDialog`: 후원 금액/메시지/비밀 여부/충전 이동이 필요한 BottomSheet다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkFragment.kt:162`
|
||||
- `CheersReportDialog`: 신고 사유 `RadioGroup` 선택값이 필요하다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelLiveCoordinator.kt:101`, `:142`, `:151`, `:195`, `:235`, `:250`
|
||||
- `LiveRoomPasswordDialog`: 비밀번호 입력이 필요하다.
|
||||
- `LivePaymentDialog`: 결제 확인과 조건부 시간 안내가 필요하다.
|
||||
- `LiveCancelDialog`: 취소 사유 입력이 필요하다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelMoreBottomSheet.kt`
|
||||
- `BottomSheetDialogFragment` 기반 더보기 메뉴다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelSortPopup.kt`
|
||||
- `PopupWindow` 기반 정렬 메뉴다.
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/ui/CreatorChannelFanTalkMorePopup.kt`
|
||||
- `PopupWindow` 기반 FanTalk 더보기 메뉴다.
|
||||
|
||||
### 테스트 영향
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuardSourceTest.kt:20`은 현재 `SodaDialog(` 문자열을 기대하므로 후속 구현 시 `V2ModalDialog(` 기대값으로 갱신해야 한다.
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt:602`, `:1374`는 현재 `SodaDialog(` 문자열을 기대하므로 후속 구현 시 `V2ModalDialog(` 또는 더 구체적인 V2 모달 계약으로 갱신해야 한다.
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/write/CreatorChannelFanTalkWriteSourceTest.kt`는 `showCancelConfirmDialog()` 흐름만 확인하므로 직접 문자열 기대 변경은 필요하지 않을 가능성이 높다.
|
||||
|
||||
### 추가 Open Questions
|
||||
- `dialog_v2_modal` 적용 범위를 현 `V2ModalDialog`가 표현 가능한 확인/취소형 모달로 제한할지, report/password/payment/donation 같은 커스텀 콘텐츠 다이얼로그까지 V2 전용 컴포넌트로 확장할지 결정이 필요하다.
|
||||
- `LivePaymentDialog`의 시작/현재 시각 안내 영역을 V2 모달 디자인 안에서 보존해야 하는지, 단순 desc로 축약해도 되는지 결정이 필요하다.
|
||||
- BottomSheet와 PopupWindow 메뉴는 `dialog_v2_modal` 적용 대상에서 제외하는 것이 자연스럽지만, 디자인 정책상 V2 전용 메뉴 컴포넌트가 필요한지 별도 확인이 필요하다.
|
||||
|
||||
---
|
||||
|
||||
## Figma 참조
|
||||
- 버튼 1개: `https://www.figma.com/design/HmN1yNdJ3EIpqknFL0Hkab/-%EA%B3%B5%EC%9C%A0%EC%9A%A9-%EB%B3%B4%EC%9D%B4%EC%8A%A4%EC%98%A8-UI-UX-%EA%B8%B0%ED%9A%8D%EB%AC%B8%EC%84%9C?node-id=567-17662&m=dev`
|
||||
- 버튼 2개: `https://www.figma.com/design/HmN1yNdJ3EIpqknFL0Hkab/-%EA%B3%B5%EC%9C%A0%EC%9A%A9-%EB%B3%B4%EC%9D%B4%EC%8A%A4%EC%98%A8-UI-UX-%EA%B8%B0%ED%9A%8D%EB%AC%B8%EC%84%9C?node-id=567-17666&m=dev`
|
||||
|
||||
Reference in New Issue
Block a user