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

View File

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

View File

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