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" />