fix(live-room): 매니저 SNS 아이콘 노출 방식을 동적 렌더링으로 통일한다
This commit is contained in:
@@ -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<GetRoomDetailUser>) {
|
||||
val userCount = if (participatingUsers.size > 10) {
|
||||
10
|
||||
|
||||
@@ -248,33 +248,11 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_manager_sns_icons"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_manager_open_chat"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_website_blue" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_manager_instagram"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_instagram_blue" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_manager_youtube"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_youtube_play_blue" />
|
||||
</LinearLayout>
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_manager_profile"
|
||||
|
||||
Reference in New Issue
Block a user