From c527f557211dfd309b73308d8349baaf1bf171ef Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 13 Jun 2025 19:36:38 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8C=94=EB=A1=9C=EC=9B=8C=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20-=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=A5=BC=20=ED=84=B0=EC=B9=98?= =?UTF-8?q?=ED=95=98=EB=A9=B4=20=ED=94=84=EB=A1=9C=ED=95=84=20=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=BC=EB=A1=9C=EA=B7=B8=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/dialog/MemberProfileDialog.kt | 8 ++++++-- .../profile/follow/UserFollowerListActivity.kt | 14 ++++++++++++++ .../profile/follow/UserFollowerListAdapter.kt | 11 +++++++++++ .../profile/follow/UserFollowerListViewModel.kt | 4 ++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/dialog/MemberProfileDialog.kt b/app/src/main/java/kr/co/vividnext/sodalive/dialog/MemberProfileDialog.kt index 3ead8c0d..0624e911 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/dialog/MemberProfileDialog.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/dialog/MemberProfileDialog.kt @@ -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() diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListActivity.kt index 59fdbd4d..f5d7579b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListActivity.kt @@ -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( 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( diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListAdapter.kt index 7b9f39eb..f7b31edb 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListAdapter.kt @@ -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() { @@ -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() } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt index 8667a9db..da4be356 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt @@ -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