feas:删除个人页-动态列表

This commit is contained in:
Max
2023-11-27 14:17:01 +08:00
parent 0bd3686cd2
commit be14ac50e1
3 changed files with 135 additions and 150 deletions

View File

@@ -680,7 +680,10 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
* TODO 临时方案后续逐步完善整个房间的RoomContext替换计划
* PS:目前房间进入的逻辑有些凌乱没有明确的生命周期看代码逻辑无论是第一次还是再次进入都会走这里所以在这里绑定View
*/
getRoomContext().onViewAttach(this);
RoomContext roomContext = getRoomContext();
if (roomContext != null) {
roomContext.onViewAttach(this);
}
/**
* 每次View重新创建意味着可能在房间外点了红包就重新尝试加载红包并展示

View File

@@ -3,47 +3,29 @@ package com.chwl.app.ui.user.fragment
import android.view.View
import androidx.fragment.app.activityViewModels
import com.netease.nim.uikit.common.util.sys.TimeUtil
import com.trello.rxlifecycle3.android.FragmentEvent
import com.chwl.app.R
import com.chwl.app.UIHelper
import com.chwl.app.avroom.ButtonItemFactory
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.widget.dialog.DialogManager
import com.chwl.app.community.helper.ShareDynamicHelper
import com.chwl.app.databinding.FragmentUserinfoUserinfoBinding
import com.chwl.app.module_hall.hall.activity.ModuleClanActivity
import com.chwl.app.module_hall.hall.activity.ModuleHallActivity
import com.chwl.app.ui.user.adapter.UserInfoDynamicAdapter
import com.chwl.app.ui.user.viewmodel.UserInfoViewModel
import com.chwl.app.ui.widget.ButtonItem
import com.chwl.core.XConstants
import com.chwl.core.auth.AuthModel
import com.chwl.core.community.bean.WorldDynamicBean
import com.chwl.core.community.dynamic.DynamicModel
import com.chwl.core.community.event.DynamicRefreshEvent
import com.chwl.core.module_hall.hall.bean.ClanAndHallInfo
import com.chwl.core.module_hall.hall.bean.ClanInfo
import com.chwl.core.module_hall.hall.bean.HallInfo
import com.chwl.core.user.UserInfoUiMgr
import com.chwl.core.user.UserModel
import com.chwl.core.user.bean.UserDetailInfo
import com.chwl.core.utils.StarUtils
import com.chwl.core.utils.net.BeanObserver
import com.chwl.core.utils.net.DontWarnObserver
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.util.*
class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBinding>() {
private val vm: UserInfoViewModel by activityViewModels()
private var dynamicAdapter: UserInfoDynamicAdapter? = null
// private var dynamicAdapter: UserInfoDynamicAdapter? = null
override fun init() {
EventBus.getDefault().register(this)
// EventBus.getDefault().register(this)
vm.hallData.observe(this) {
initPersonalData(it)
@@ -51,7 +33,7 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
vm.userInfoDetailData.observe(this) {
initInfoData(it)
initDynamicList(it.dynamicInfo)
// initDynamicList(it.dynamicInfo)
}
}
@@ -124,126 +106,126 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
}
/**
* 动态列表
*
* @param worldDynamicList
*/
private fun initDynamicList(worldDynamicList: List<WorldDynamicBean>) {
if (dynamicAdapter == null) {
dynamicAdapter = UserInfoDynamicAdapter(mContext)
dynamicAdapter?.setEnableLoadMore(false)
dynamicAdapter?.setOnItemChildClickListener { _, view: View, pos: Int ->
val bean: WorldDynamicBean =
dynamicAdapter?.getItem(pos) ?: return@setOnItemChildClickListener
if (view.id == R.id.iv_more) {
val list: MutableList<ButtonItem> = ArrayList()
if (!UserModel.get().isMyseft(bean.uid)) {
val item = ButtonItem(
getString(R.string.me_shield_dynamic)
) {
UserModel.get().addReport(bean.dynamicId, 0)
.subscribe(object : BeanObserver<String?>() {
override fun onErrorMsg(error: String) {
dialogManager.dismissDialog()
toast(error)
}
// /**
// * 动态列表
// *
// * @param worldDynamicList
// */
// private fun initDynamicList(worldDynamicList: List<WorldDynamicBean>) {
// if (dynamicAdapter == null) {
// dynamicAdapter = UserInfoDynamicAdapter(mContext)
// dynamicAdapter?.setEnableLoadMore(false)
// dynamicAdapter?.setOnItemChildClickListener { _, view: View, pos: Int ->
// val bean: WorldDynamicBean =
// dynamicAdapter?.getItem(pos) ?: return@setOnItemChildClickListener
// if (view.id == R.id.iv_more) {
// val list: MutableList<ButtonItem> = ArrayList()
// if (!UserModel.get().isMyseft(bean.uid)) {
// val item = ButtonItem(
// getString(R.string.me_shield_dynamic)
// ) {
// UserModel.get().addReport(bean.dynamicId, 0)
// .subscribe(object : BeanObserver<String?>() {
// override fun onErrorMsg(error: String) {
// dialogManager.dismissDialog()
// toast(error)
// }
//
// override fun onSuccess(s: String) {
// dialogManager.dismissDialog()
// toast(ResUtil.getString(R.string.me_shield_success))
// if (pos < (dynamicAdapter?.data?.size ?: 0)) {
// if (bean == dynamicAdapter?.getItem(pos)) {
// dynamicAdapter?.remove(pos)
// }
// }
// }
// })
// }
// list.add(item)
// }
// if (!UserModel.get().isMyseft(bean.uid)) {
// val blackListItem = ButtonItemFactory.createAddToBlackListItem(
// dialogManager, bean.uid.toString()
// )
// list.add(blackListItem)
// }
// if (!UserModel.get().isMyseft(bean.uid)) {
// val item = ButtonItem(
// getString(R.string.me_report_dynamic)
// ) {
// UIHelper.showReportPage(
// mContext, bean.uid,
// XConstants.REPORT_TYPE_DYNAMIC_SQUARE
// )
// }
// list.add(item)
// }
// if (UserModel.get().isMyseft(bean.uid) ||
// isThisWorldOwner(bean)
// ) {
// val item = ButtonItem(
// getString(R.string.me_delete)
// ) { deleteDynamic(pos, dynamicAdapter) }
// list.add(item)
// }
// dialogManager.showCommonPopupDialog(list, getString(R.string.cancel))
// } else if (view.id == R.id.ll_share) {
// ShareDynamicHelper(activity).share(bean)
// }
// }
// binding.mRecyclerView.adapter = dynamicAdapter
// }
// dynamicAdapter?.setNewData(worldDynamicList)
// }
override fun onSuccess(s: String) {
dialogManager.dismissDialog()
toast(ResUtil.getString(R.string.me_shield_success))
if (pos < (dynamicAdapter?.data?.size ?: 0)) {
if (bean == dynamicAdapter?.getItem(pos)) {
dynamicAdapter?.remove(pos)
}
}
}
})
}
list.add(item)
}
if (!UserModel.get().isMyseft(bean.uid)) {
val blackListItem = ButtonItemFactory.createAddToBlackListItem(
dialogManager, bean.uid.toString()
)
list.add(blackListItem)
}
if (!UserModel.get().isMyseft(bean.uid)) {
val item = ButtonItem(
getString(R.string.me_report_dynamic)
) {
UIHelper.showReportPage(
mContext, bean.uid,
XConstants.REPORT_TYPE_DYNAMIC_SQUARE
)
}
list.add(item)
}
if (UserModel.get().isMyseft(bean.uid) ||
isThisWorldOwner(bean)
) {
val item = ButtonItem(
getString(R.string.me_delete)
) { deleteDynamic(pos, dynamicAdapter) }
list.add(item)
}
dialogManager.showCommonPopupDialog(list, getString(R.string.cancel))
} else if (view.id == R.id.ll_share) {
ShareDynamicHelper(activity).share(bean)
}
}
binding.mRecyclerView.adapter = dynamicAdapter
}
dynamicAdapter?.setNewData(worldDynamicList)
}
//
// private fun deleteDynamic(pos: Int, adapter: UserInfoDynamicAdapter?) {
// dialogManager.showOkCancelWithTitleDialog(getString(R.string.me_cannot_be_restored),
// DialogManager.OkCancelDialogListener {
// val bean = adapter?.getItem(pos) ?: return@OkCancelDialogListener
// DynamicModel.get().delete(bean.worldId, bean.dynamicId)
// .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
// .doOnSubscribe { dialogManager.showProgressDialog(mContext) }
// .subscribe(object : DontWarnObserver<String?>() {
// override fun accept(s: String?, error: String?) {
// super.accept(s, error)
// dialogManager.dismissDialog()
// if (error != null) {
// toast(error)
// } else {
// toast(getString(R.string.me_successfully_delete))
// if (pos < adapter.data.size) {
// if (bean == adapter.getItem(pos)) {
// adapter.remove(pos)
// }
// }
// }
// }
// })
// })
// }
// /**
// * 判断自己是不是该世界的创始人
// */
// private fun isThisWorldOwner(bean: WorldDynamicBean?): Boolean {
// return bean != null && bean.worldUid == AuthModel.get().currentUid
// }
private fun deleteDynamic(pos: Int, adapter: UserInfoDynamicAdapter?) {
dialogManager.showOkCancelWithTitleDialog(getString(R.string.me_cannot_be_restored),
DialogManager.OkCancelDialogListener {
val bean = adapter?.getItem(pos) ?: return@OkCancelDialogListener
DynamicModel.get().delete(bean.worldId, bean.dynamicId)
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.doOnSubscribe { dialogManager.showProgressDialog(mContext) }
.subscribe(object : DontWarnObserver<String?>() {
override fun accept(s: String?, error: String?) {
super.accept(s, error)
dialogManager.dismissDialog()
if (error != null) {
toast(error)
} else {
toast(getString(R.string.me_successfully_delete))
if (pos < adapter.data.size) {
if (bean == adapter.getItem(pos)) {
adapter.remove(pos)
}
}
}
}
})
})
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// fun onDynamicRefreshEvent(event: DynamicRefreshEvent?) {
// if (isResumed) {
// vm.userInfoDetailData.observe(this) {
// initInfoData(it)
// initDynamicList(it.dynamicInfo)
// }
// }
// }
/**
* 判断自己是不是该世界的创始人
*/
private fun isThisWorldOwner(bean: WorldDynamicBean?): Boolean {
return bean != null && bean.worldUid == AuthModel.get().currentUid
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onDynamicRefreshEvent(event: DynamicRefreshEvent?) {
if (isResumed) {
vm.userInfoDetailData.observe(this) {
initInfoData(it)
initDynamicList(it.dynamicInfo)
}
}
}
override fun onDestroyView() {
EventBus.getDefault().unregister(this)
super.onDestroyView()
}
// override fun onDestroyView() {
// EventBus.getDefault().unregister(this)
// super.onDestroyView()
// }
}

View File

@@ -181,17 +181,17 @@
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/mRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:layout_marginBottom="@dimen/dp_60"
android:background="@drawable/bg_ffffff_8"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/mRecyclerView"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="@dimen/dp_14"-->
<!-- android:layout_marginBottom="@dimen/dp_60"-->
<!-- android:background="@drawable/bg_ffffff_8"-->
<!-- android:nestedScrollingEnabled="false"-->
<!-- android:overScrollMode="never"-->
<!-- android:scrollbars="none"-->
<!-- app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />-->
</LinearLayout>