diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt index d1d5c465..3a086c30 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt @@ -347,6 +347,9 @@ class UserProfileActivity : BaseActivity( } private fun setupChannelDonationView() { + binding.layoutUserProfileChannelDonation.llChannelDonation.visibility = + if (userId == SharedPreferenceManager.userId) View.GONE else View.VISIBLE + binding.layoutUserProfileChannelDonation.tvAll.setOnClickListener { val intent = Intent(applicationContext, UserProfileChannelDonationAllViewActivity::class.java) intent.putExtra(Constants.EXTRA_USER_ID, userId) @@ -358,7 +361,9 @@ class UserProfileActivity : BaseActivity( this, LayoutInflater.from(this), isLiveDonation = true, - messageMaxLength = 100 + messageMaxLength = 100, + secretToggleLabelResId = R.string.screen_user_profile_channel_donation_secret, + applySecretMissionMessageHint = false ) { can, message, isSecret -> viewModel.postChannelDonation( creatorId = userId, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/donation/LiveRoomDonationDialog.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/donation/LiveRoomDonationDialog.kt index 663442d5..be9a6996 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/donation/LiveRoomDonationDialog.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/donation/LiveRoomDonationDialog.kt @@ -28,6 +28,8 @@ class LiveRoomDonationDialog( layoutInflater: LayoutInflater, isLiveDonation: Boolean = false, messageMaxLength: Int = 1000, + secretToggleLabelResId: Int = R.string.screen_live_room_secret_mission, + applySecretMissionMessageHint: Boolean = true, onClickDonation: (Int, String, Boolean) -> Unit ) { @@ -103,10 +105,11 @@ class LiveRoomDonationDialog( if (isLiveDonation) { dialogView.rlSecret.visibility = View.VISIBLE + dialogView.tvSecret.text = activity.getString(secretToggleLabelResId) dialogView.tvSecret.setOnClickListener { val isSelected = dialogView.tvSecret.isSelected dialogView.tvSecret.isSelected = !isSelected - dialogView.etDonationMessage.hint = if (!isSelected) { + dialogView.etDonationMessage.hint = if (!isSelected && applySecretMissionMessageHint) { activity.getString( R.string.screen_live_room_secret_mission_hint_format, messageMaxLength diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index fc28bb60..af938ec4 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -800,6 +800,7 @@ Donate to Channel View all Channel Donations No channel donations yet. + Secret donation Cheer Leave a cheer comment! Leave a reply to this cheer! diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 4978c9bc..b2a80adc 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -800,6 +800,7 @@ チャンネルにギフトする チャンネルギフトをすべて見る チャンネルギフトがありません。 + シークレットギフト 応援 応援コメントを残してみましょう! 応援コメントに返信してみましょう! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 35fc695e..133e40f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -799,6 +799,7 @@ 채널 후원하기 채널 후원 전체보기 채널 후원이 없습니다. + 비밀후원 응원 응원댓글을 남겨보세요! 응원댓글에 답글을 남겨보세요! diff --git a/docs/20260225_후원UI비밀문구국제화수정.md b/docs/20260225_후원UI비밀문구국제화수정.md new file mode 100644 index 00000000..89bef42e --- /dev/null +++ b/docs/20260225_후원UI비밀문구국제화수정.md @@ -0,0 +1,13 @@ +- [x] 후원 UI 공용 다이얼로그와 호출부에서 문구 분기 지점을 확정한다. +- [x] 채널 후원에서는 '비밀후원', 라이브 룸에서는 기존 '비밀미션'이 노출되도록 구현한다. +- [x] 다국어 리소스(values, values-en, values-ja)에 신규 문구를 추가하고 연결한다. +- [x] 관련 검증(진단/테스트)을 수행하고 결과를 기록한다. +- [x] 비밀후원 체크 시 메시지 입력창은 체크 전과 동일한 힌트를 유지하도록 수정하고 검증한다. + +## 검증 기록 + +- 무엇/왜/어떻게: Kotlin LSP 진단 가능 여부를 먼저 확인해 수정 파일 정적 진단을 수행하려고 했다. 명령: `lsp_diagnostics(LiveRoomDonationDialog.kt, UserProfileActivity.kt)` 결과: 현 실행 환경에 `.kt` LSP 서버가 설정되어 있지 않아 도구 기반 LSP 진단은 수행 불가 메시지를 확인했다. +- 무엇/왜/어떻게: 변경으로 인한 회귀를 확인하기 위해 단위 테스트를 전체 실행했다. 명령: `./gradlew :app:testDebugUnitTest` 결과: `BUILD SUCCESSFUL`. +- 무엇/왜/어떻게: 실제 앱 빌드 가능 여부를 검증하기 위해 디버그 APK 빌드를 수행했다. 명령: `./gradlew :app:assembleDebug` 결과: `BUILD SUCCESSFUL`. +- 무엇/왜/어떻게: 최종 상태 재검증을 위해 테스트와 빌드를 한 번 더 동시 실행했다. 명령: `./gradlew :app:testDebugUnitTest :app:assembleDebug` 결과: `BUILD SUCCESSFUL`. +- 무엇/왜/어떻게: 비밀후원 체크 시 메시지 힌트가 기본 상태를 유지하도록 로직을 분리한 뒤 회귀를 확인했다. 명령: `./gradlew :app:testDebugUnitTest :app:assembleDebug` 결과: `BUILD SUCCESSFUL`. diff --git a/docs/20260226_채널후원버튼노출조건수정.md b/docs/20260226_채널후원버튼노출조건수정.md new file mode 100644 index 00000000..bbb03fad --- /dev/null +++ b/docs/20260226_채널후원버튼노출조건수정.md @@ -0,0 +1,9 @@ +- [x] 채널 후원하기 버튼 노출 제어 위치와 내 페이지 판별 조건을 확인한다. +- [x] 내 페이지일 때 채널 후원하기 버튼이 숨김 처리되도록 수정한다. +- [x] 관련 검증(진단/테스트/빌드) 결과를 기록한다. + +## 검증 기록 + +- 무엇/왜/어떻게: 채널 후원하기 버튼의 노출 조건을 코드에서 직접 확인했다. `setupChannelDonationView()`에서 `userId == SharedPreferenceManager.userId` 비교로 내 페이지 여부를 판별하고, 내 페이지면 `llChannelDonation`을 `View.GONE` 처리하도록 반영했다. +- 무엇/왜/어떻게: 수정 파일 정적 진단을 위해 `lsp_diagnostics(UserProfileActivity.kt)`를 실행했다. 현재 환경에 `.kt` LSP 서버가 없어 도구 기반 진단은 수행 불가 메시지를 확인했다. +- 무엇/왜/어떻게: 회귀 여부 확인을 위해 테스트/빌드를 실행했다. 명령: `./gradlew :app:testDebugUnitTest :app:assembleDebug` 결과: `BUILD SUCCESSFUL`.