feat: 팔로워 리스트
- 프로필 이미지를 터치하면 프로필 다이얼로그 표시
This commit is contained in:
@@ -27,7 +27,8 @@ class MemberProfileDialog(
|
||||
private val activity: FragmentActivity,
|
||||
private val layoutInflater: LayoutInflater,
|
||||
private val memberId: Long,
|
||||
private val screenWidth: Int
|
||||
private val screenWidth: Int,
|
||||
private val onBlockComplete: () -> Unit = {}
|
||||
) : KoinComponent {
|
||||
|
||||
private val viewModel: UserViewModel by inject()
|
||||
@@ -143,7 +144,10 @@ class MemberProfileDialog(
|
||||
dialog.setTitle("사용자 차단")
|
||||
dialog.setMessage(message)
|
||||
dialog.setPositiveButton("차단") { _, _ ->
|
||||
viewModel.memberBlock(memberId) { dismiss() }
|
||||
viewModel.memberBlock(memberId) {
|
||||
dismiss()
|
||||
onBlockComplete()
|
||||
}
|
||||
}
|
||||
dialog.setNegativeButton("취소") { _, _ -> }
|
||||
dialog.show()
|
||||
|
||||
@@ -10,7 +10,9 @@ import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||
import kr.co.vividnext.sodalive.databinding.ActivityUserFollowerListBinding
|
||||
import kr.co.vividnext.sodalive.dialog.MemberProfileDialog
|
||||
import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment
|
||||
import kr.co.vividnext.sodalive.explorer.profile.fantalk.UserProfileFantalkAllViewActivity
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||
import org.koin.android.ext.android.inject
|
||||
@@ -51,6 +53,18 @@ class UserFollowerListActivity : BaseActivity<ActivityUserFollowerListBinding>(
|
||||
binding.toolbar.tvBack.setOnClickListener { finish() }
|
||||
|
||||
adapter = UserFollowerListAdapter(
|
||||
onClickProfile = { memberId ->
|
||||
MemberProfileDialog(
|
||||
activity = this@UserFollowerListActivity,
|
||||
layoutInflater = layoutInflater,
|
||||
memberId = memberId,
|
||||
screenWidth = screenWidth,
|
||||
onBlockComplete = {
|
||||
adapter.removeMember(memberId)
|
||||
viewModel.setTotalCountMinusOne()
|
||||
}
|
||||
).show()
|
||||
},
|
||||
onClickFollow = { creatorId, isFollow ->
|
||||
if (isFollow) {
|
||||
val notifyFragment = CreatorFollowNotifyFragment(
|
||||
|
||||
@@ -11,6 +11,7 @@ import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.databinding.ItemFollowerListBinding
|
||||
|
||||
class UserFollowerListAdapter(
|
||||
private val onClickProfile: (Long) -> Unit,
|
||||
private val onClickFollow: (Long, Boolean) -> Unit
|
||||
) : RecyclerView.Adapter<UserFollowerListAdapter.ViewHolder>() {
|
||||
|
||||
@@ -27,6 +28,10 @@ class UserFollowerListAdapter(
|
||||
crossfade(true)
|
||||
}
|
||||
|
||||
binding.ivProfile.setOnClickListener {
|
||||
onClickProfile(item.userId)
|
||||
}
|
||||
|
||||
if (item.isFollow != null && item.isNotify != null) {
|
||||
if (item.isFollow) {
|
||||
binding.ivFollow.setImageResource(
|
||||
@@ -56,6 +61,12 @@ class UserFollowerListAdapter(
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun removeMember(memberId: Long) {
|
||||
val filteredItem = this.items.filterNot { it.userId == memberId }
|
||||
clear()
|
||||
addAll(filteredItem)
|
||||
}
|
||||
|
||||
fun clear() {
|
||||
this.items.clear()
|
||||
}
|
||||
|
||||
@@ -36,6 +36,10 @@ class UserFollowerListViewModel(
|
||||
private var isLast = false
|
||||
private var pageSize = 10
|
||||
|
||||
fun setTotalCountMinusOne() {
|
||||
_totalCountLiveData.value = _totalCountLiveData.value!! - 1
|
||||
}
|
||||
|
||||
fun getFollowerList() {
|
||||
if (!isLast && !_isLoading.value!!) {
|
||||
_isLoading.value = true
|
||||
|
||||
Reference in New Issue
Block a user