From 08524bd79a2e960ced1bb776cc5264c99968e3d8 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 24 Mar 2026 13:35:15 +0900 Subject: [PATCH] =?UTF-8?q?fix(live-room):=20=EB=A7=A4=EB=8B=88=EC=A0=80?= =?UTF-8?q?=20SNS=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EB=85=B8=EC=B6=9C=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=EC=9D=84=20=EB=8F=99=EC=A0=81=20=EB=A0=8C?= =?UTF-8?q?=EB=8D=94=EB=A7=81=EC=9C=BC=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/detail/LiveRoomDetailFragment.kt | 102 ++++++++++++------ .../res/layout/fragment_live_room_detail.xml | 28 +---- docs/20260324_라이브상세sns아이콘변경.md | 22 ++++ 3 files changed, 92 insertions(+), 60 deletions(-) create mode 100644 docs/20260324_라이브상세sns아이콘변경.md diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt index c19c7994..57fe2367 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt @@ -10,6 +10,7 @@ import android.view.View import android.view.ViewGroup import android.webkit.URLUtil import android.widget.FrameLayout +import android.widget.ImageView import android.widget.LinearLayout import android.widget.Toast import androidx.recyclerview.widget.GridLayoutManager @@ -44,6 +45,11 @@ class LiveRoomDetailFragment( private val onClickCancel: () -> Unit ) : BottomSheetDialogFragment() { + private data class SnsItem( + val url: String, + val iconResId: Int + ) + private val viewModel: LiveRoomDetailViewModel by inject() private lateinit var binding: FragmentLiveRoomDetailBinding @@ -273,41 +279,7 @@ class LiveRoomDetailFragment( transformations(CircleCropTransformation()) } - if ( - manager.kakaoOpenChatUrl.isNullOrBlank() || - !URLUtil.isValidUrl(manager.kakaoOpenChatUrl) - ) { - binding.ivManagerOpenChat.visibility = View.GONE - } else { - binding.ivManagerOpenChat.visibility = View.VISIBLE - binding.ivManagerOpenChat.setOnClickListener { - startActivity(Intent(Intent.ACTION_VIEW, manager.kakaoOpenChatUrl.toUri())) - } - } - - if ( - manager.instagramUrl.isNullOrBlank() || - !URLUtil.isValidUrl(manager.instagramUrl) - ) { - binding.ivManagerInstagram.visibility = View.GONE - } else { - binding.ivManagerInstagram.visibility = View.VISIBLE - binding.ivManagerInstagram.setOnClickListener { - startActivity(Intent(Intent.ACTION_VIEW, manager.instagramUrl.toUri())) - } - } - - if ( - manager.youtubeUrl.isNullOrBlank() || - !URLUtil.isValidUrl(manager.youtubeUrl) - ) { - binding.ivManagerYoutube.visibility = View.GONE - } else { - binding.ivManagerYoutube.visibility = View.VISIBLE - binding.ivManagerYoutube.setOnClickListener { - startActivity(Intent(Intent.ACTION_VIEW, manager.youtubeUrl.toUri())) - } - } + bindManagerSnsItems(manager) if (manager.isCreator) { binding.tvManagerProfile.visibility = View.VISIBLE @@ -321,6 +293,66 @@ class LiveRoomDetailFragment( } } + private fun bindManagerSnsItems(manager: GetRoomDetailManager) { + val snsItems = listOf( + SnsItem( + url = manager.youtubeUrl?.trim().orEmpty(), + iconResId = R.drawable.ic_sns_youtube + ), + SnsItem( + url = manager.instagramUrl?.trim().orEmpty(), + iconResId = R.drawable.ic_sns_instagram + ), + SnsItem( + url = manager.xUrl?.trim().orEmpty(), + iconResId = R.drawable.ic_sns_x + ), + SnsItem( + url = manager.fancimmUrl?.trim().orEmpty(), + iconResId = R.drawable.ic_sns_fancimm + ), + SnsItem( + url = manager.kakaoOpenChatUrl?.trim().orEmpty(), + iconResId = R.drawable.ic_sns_kakao + ) + ).filter { item -> + item.url.isNotBlank() && URLUtil.isValidUrl(item.url) + } + + binding.llManagerSnsIcons.removeAllViews() + binding.llManagerSnsIcons.visibility = if (snsItems.isEmpty()) { + View.GONE + } else { + View.VISIBLE + } + + snsItems.forEachIndexed { index, item -> + val imageView = ImageView(requireContext()).apply { + setImageResource(item.iconResId) + layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ).apply { + if (index > 0) { + marginStart = 8.dpToPx().toInt() + } + } + setOnClickListener { + openUrl(item.url) + } + } + + binding.llManagerSnsIcons.addView(imageView) + } + } + + private fun openUrl(url: String) { + val intent = Intent(Intent.ACTION_VIEW, url.toUri()) + if (intent.resolveActivity(requireActivity().packageManager) != null) { + startActivity(intent) + } + } + private fun setParticipantUserSummary(participatingUsers: List) { val userCount = if (participatingUsers.size > 10) { 10 diff --git a/app/src/main/res/layout/fragment_live_room_detail.xml b/app/src/main/res/layout/fragment_live_room_detail.xml index ab001d9d..aaef595a 100644 --- a/app/src/main/res/layout/fragment_live_room_detail.xml +++ b/app/src/main/res/layout/fragment_live_room_detail.xml @@ -248,33 +248,11 @@ android:orientation="vertical"> - - - - - - - + android:orientation="horizontal" + android:visibility="gone" />