feat(creator-channel): FanTalk 목록 상세 클릭을 추가한다
This commit is contained in:
@@ -23,7 +23,8 @@ class CreatorChannelFanTalkFragment : BaseFragment<FragmentCreatorChannelFantalk
|
|||||||
private val viewModel: CreatorChannelFanTalkViewModel by viewModel()
|
private val viewModel: CreatorChannelFanTalkViewModel by viewModel()
|
||||||
private val fanTalkAdapter = CreatorChannelFanTalkAdapter(
|
private val fanTalkAdapter = CreatorChannelFanTalkAdapter(
|
||||||
onOwnerMoreClick = ::showOwnerMorePopup,
|
onOwnerMoreClick = ::showOwnerMorePopup,
|
||||||
onReportClick = ::showReportDialog
|
onReportClick = ::showReportDialog,
|
||||||
|
onItemClick = { host.onCreatorChannelFanTalkItemClicked(it) }
|
||||||
)
|
)
|
||||||
private var morePopup: CreatorChannelFanTalkMorePopup? = null
|
private var morePopup: CreatorChannelFanTalkMorePopup? = null
|
||||||
private var lastContentLayoutKey: CreatorChannelFanTalkContentLayoutKey? = null
|
private var lastContentLayoutKey: CreatorChannelFanTalkContentLayoutKey? = null
|
||||||
@@ -186,6 +187,7 @@ class CreatorChannelFanTalkFragment : BaseFragment<FragmentCreatorChannelFantalk
|
|||||||
fun onCreatorChannelFanTalkWriteClicked()
|
fun onCreatorChannelFanTalkWriteClicked()
|
||||||
fun onCreatorChannelFanTalkFloatingButtonVisibilityChanged(isVisible: Boolean)
|
fun onCreatorChannelFanTalkFloatingButtonVisibilityChanged(isVisible: Boolean)
|
||||||
fun onCreatorChannelFanTalkDeleteClicked(fanTalkId: Long)
|
fun onCreatorChannelFanTalkDeleteClicked(fanTalkId: Long)
|
||||||
|
fun onCreatorChannelFanTalkItemClicked(item: CreatorChannelFanTalkUiModel) = Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.model.CreatorChannelF
|
|||||||
|
|
||||||
class CreatorChannelFanTalkAdapter(
|
class CreatorChannelFanTalkAdapter(
|
||||||
private val onOwnerMoreClick: (View, CreatorChannelFanTalkUiModel) -> Unit = { _, _ -> },
|
private val onOwnerMoreClick: (View, CreatorChannelFanTalkUiModel) -> Unit = { _, _ -> },
|
||||||
private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit = { }
|
private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit = { },
|
||||||
|
private val onItemClick: (CreatorChannelFanTalkUiModel) -> Unit = { }
|
||||||
) : RecyclerView.Adapter<CreatorChannelFanTalkAdapter.ViewHolder>() {
|
) : RecyclerView.Adapter<CreatorChannelFanTalkAdapter.ViewHolder>() {
|
||||||
|
|
||||||
private var items: List<CreatorChannelFanTalkUiModel> = emptyList()
|
private var items: List<CreatorChannelFanTalkUiModel> = emptyList()
|
||||||
@@ -29,7 +30,8 @@ class CreatorChannelFanTalkAdapter(
|
|||||||
return ViewHolder(
|
return ViewHolder(
|
||||||
ItemCreatorChannelFantalkBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
ItemCreatorChannelFantalkBinding.inflate(LayoutInflater.from(parent.context), parent, false),
|
||||||
onOwnerMoreClick,
|
onOwnerMoreClick,
|
||||||
onReportClick
|
onReportClick,
|
||||||
|
onItemClick
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +44,8 @@ class CreatorChannelFanTalkAdapter(
|
|||||||
class ViewHolder(
|
class ViewHolder(
|
||||||
private val binding: ItemCreatorChannelFantalkBinding,
|
private val binding: ItemCreatorChannelFantalkBinding,
|
||||||
private val onOwnerMoreClick: (View, CreatorChannelFanTalkUiModel) -> Unit,
|
private val onOwnerMoreClick: (View, CreatorChannelFanTalkUiModel) -> Unit,
|
||||||
private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit
|
private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit,
|
||||||
|
private val onItemClick: (CreatorChannelFanTalkUiModel) -> Unit
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(item: CreatorChannelFanTalkUiModel) = with(binding) {
|
fun bind(item: CreatorChannelFanTalkUiModel) = with(binding) {
|
||||||
@@ -50,6 +53,8 @@ class CreatorChannelFanTalkAdapter(
|
|||||||
tvCreatorChannelFantalkNickname.text = item.writerNickname
|
tvCreatorChannelFantalkNickname.text = item.writerNickname
|
||||||
tvCreatorChannelFantalkTime.text = item.createdAtText
|
tvCreatorChannelFantalkTime.text = item.createdAtText
|
||||||
tvCreatorChannelFantalkContent.text = item.content
|
tvCreatorChannelFantalkContent.text = item.content
|
||||||
|
root.setOnClickListener { onItemClick(item) }
|
||||||
|
tvCreatorChannelFantalkContent.setOnClickListener { onItemClick(item) }
|
||||||
bindRightAction(item)
|
bindRightAction(item)
|
||||||
bindReply(item.reply)
|
bindReply(item.reply)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,7 +153,9 @@ class CreatorChannelFanTalkFragmentLayoutTest {
|
|||||||
assertTrue(adapter.contains("R.drawable.ic_placeholder_profile"))
|
assertTrue(adapter.contains("R.drawable.ic_placeholder_profile"))
|
||||||
assertTrue(adapter.contains("CreatorChannelFanTalkRightAction.Report"))
|
assertTrue(adapter.contains("CreatorChannelFanTalkRightAction.Report"))
|
||||||
assertTrue(adapter.contains("CreatorChannelFanTalkRightAction.OwnerMore"))
|
assertTrue(adapter.contains("CreatorChannelFanTalkRightAction.OwnerMore"))
|
||||||
assertFalse(adapter.contains("root.setOnClickListener"))
|
assertTrue(adapter.contains("private val onItemClick: (CreatorChannelFanTalkUiModel) -> Unit"))
|
||||||
|
assertTrue(adapter.contains("root.setOnClickListener { onItemClick(item) }"))
|
||||||
|
assertTrue(adapter.contains("tvCreatorChannelFantalkContent.setOnClickListener { onItemClick(item) }"))
|
||||||
assertTrue(popup.contains("PopupWindow(anchor.context)"))
|
assertTrue(popup.contains("PopupWindow(anchor.context)"))
|
||||||
assertTrue(popup.contains("tvCreatorChannelFantalkMoreEdit.isVisible = showEdit"))
|
assertTrue(popup.contains("tvCreatorChannelFantalkMoreEdit.isVisible = showEdit"))
|
||||||
assertTrue(popup.contains("tvCreatorChannelFantalkMoreDelete.isVisible = showDelete"))
|
assertTrue(popup.contains("tvCreatorChannelFantalkMoreDelete.isVisible = showDelete"))
|
||||||
@@ -192,6 +194,9 @@ class CreatorChannelFanTalkFragmentLayoutTest {
|
|||||||
assertTrue(fragment.contains("fun onCreatorChannelFanTalkDeleteClicked(fanTalkId: Long)"))
|
assertTrue(fragment.contains("fun onCreatorChannelFanTalkDeleteClicked(fanTalkId: Long)"))
|
||||||
assertTrue(adapter.contains("private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit"))
|
assertTrue(adapter.contains("private val onReportClick: (CreatorChannelFanTalkUiModel) -> Unit"))
|
||||||
assertTrue(adapter.contains("tvCreatorChannelFantalkReport.setOnClickListener { onReportClick(item) }"))
|
assertTrue(adapter.contains("tvCreatorChannelFantalkReport.setOnClickListener { onReportClick(item) }"))
|
||||||
|
assertTrue(adapter.contains("ivCreatorChannelFantalkMore.setOnClickListener { onOwnerMoreClick(it, item) }"))
|
||||||
|
assertTrue(fragment.contains("onItemClick = { host.onCreatorChannelFanTalkItemClicked(it) }"))
|
||||||
|
assertTrue(fragment.contains("fun onCreatorChannelFanTalkItemClicked(item: CreatorChannelFanTalkUiModel)"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user