修復屏蔽bug

This commit is contained in:
wushaocheng
2022-10-23 01:51:58 +08:00
parent 044c48d5c3
commit 892f6d0284
19 changed files with 429 additions and 101 deletions

View File

@@ -334,7 +334,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
NewUserChargeGiftDialog.start(context);
DemoCache.saveNewUserChargeGift(2);
}
checkShowAnchorCardView();
// checkShowAnchorCardView();
}
}
@@ -675,7 +675,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
EventBus.getDefault().post(new UnReadCountEvent(integer));
}
});
checkShowAnchorCardView();
// checkShowAnchorCardView();
}
@SuppressLint("CheckResult")

View File

@@ -496,7 +496,7 @@ public class ButtonItemFactory {
* 拉黑
*/
public static ButtonItem createAddToBlackListItem(DialogManager dialogManager, String account) {
return new ButtonItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_030), () -> {
return new ButtonItem(ResUtil.getString(R.string.me_block), () -> {
dialogManager.showOkCancelDialog(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_031), true,
new DialogManager.AbsOkDialogListener() {
@Override

View File

@@ -10,21 +10,29 @@ import android.widget.PopupWindow
import android.widget.TextView
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.mob.moblink.beans.LinkData.Res
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.UIHelper
import com.yizhuan.erban.avroom.ButtonItemFactory
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.avroom.adapter.ExitRoomAdapter
import com.yizhuan.erban.avroom.presenter.HomePartyPresenter
import com.yizhuan.erban.base.BaseMvpActivity
import com.yizhuan.erban.common.widget.dialog.DialogManager
import com.yizhuan.erban.common.widget.dialog.DialogManager.LambdaOkDialogListener
import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.erban.ui.widget.ButtonItem
import com.yizhuan.xchat_android_constants.XChatConstants
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.utils.net.BeanObserver
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.ResUtil
import io.reactivex.disposables.Disposable
@@ -73,8 +81,38 @@ class ExitRoomPopupWindow(val avRoomActivity: AVRoomActivity) : PopupWindow() {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
tvReport.setOnClickListener {
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return@setOnClickListener
UIHelper.showReportPage(avRoomActivity, roomInfo.uid, XChatConstants.REPORT_TYPE_ROOM)
dismiss()
val list: MutableList<ButtonItem> = ArrayList()
val item1 = ButtonItem(
ResUtil.getString(R.string.me_shield_room)
) {
UserModel.get().addReport(roomInfo.uid, 1)
.subscribe(object : BeanObserver<String?>() {
override fun onErrorMsg(error: String) {
dismiss()
avRoomActivity.toast(error)
}
override fun onSuccess(s: String) {
avRoomActivity.dialogManager.dismissDialog()
avRoomActivity.toast(ResUtil.getString(R.string.me_shield_success))
handleExitRoom()
dismiss()
}
})
}
list.add(item1)
val item2 = ButtonItem(
ResUtil.getString(R.string.layout_dialog_exit_room_01)
) {
UIHelper.showReportPage(avRoomActivity, roomInfo.uid, XChatConstants.REPORT_TYPE_ROOM)
avRoomActivity.dialogManager.dismissDialog()
dismiss()
}
list.add(item2)
avRoomActivity.dialogManager.showCommonPopupDialog(list, ResUtil.getString(R.string.cancel))
}
tvExitRoom.setOnClickListener {

View File

@@ -8,13 +8,20 @@ import android.graphics.drawable.ColorDrawable
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.widget.PopupWindow
import android.widget.TextView
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.Purchase
import com.android.billingclient.api.SkuDetails
import com.appsflyer.AFInAppEventParameterName
import com.appsflyer.AFInAppEventType
import com.appsflyer.AppsFlyerLib
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
@@ -28,7 +35,9 @@ import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeGoods
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeReward
import com.yizhuan.xchat_android_core.pay.bean.PayRecordId
import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent
import com.yizhuan.xchat_android_core.utils.net.IgnoreException
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.ResUtil
@@ -57,6 +66,7 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
}
private const val BIND_CODE_GOLD = 200
private const val TAG = "FirstChargeDialog"
}
@SuppressLint("CheckResult")
@@ -87,12 +97,12 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
}
binding.ivHelp.setOnClickListener { showHelpPopup() }
binding.tvCharge.setOnClickListener {
currGoods?.let {
SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
.show(this)
} ?: run {
ResUtil.getString(R.string.avroom_firstcharge_firstchargedialog_01).toast()
}
// currGoods?.let {
// SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
// .show(this)
// } ?: run {
// ResUtil.getString(R.string.avroom_firstcharge_firstchargedialog_01).toast()
// }
}
rvDelegate = RVDelegate.Builder<FirstChargeReward>()
@@ -103,6 +113,22 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
})
.setRecyclerView(binding.recyclerView)
.build()
binding.viewBg.setOnClickListener {
//do nothing
}
binding.root.setOnClickListener {
finish()
}
}
private fun initBilling() {
billingManager = BillingManager(this, this)
}
@SuppressLint("CheckResult")
override fun onBillingClientSetupFinished() {
Log.i(TAG, "onBillingClientSetupFinished")
dialogManager.showProgressDialog(this)
PayModel.get().firstChargeList
.compose(bindToLifecycle())
@@ -115,17 +141,6 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
SingleToastUtil.showToast(it.message)
finish()
})
binding.viewBg.setOnClickListener {
//do nothing
}
binding.root.setOnClickListener {
finish()
}
}
private fun initBilling() {
billingManager = BillingManager(this, this)
}
@SuppressLint("SetTextI18n")
@@ -150,6 +165,137 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
binding.rbPlanC.text = "${goodsList[2].chargeMoney}$"
}
}
initProduceList(goodsList)
}
private fun initProduceList(chargeBeanList: List<FirstChargeGoods>) {
val productKeys: MutableList<String> = ArrayList()
for (chargeBean in chargeBeanList) {
productKeys.add(chargeBean.chargeProdId)
}
billingManager.querySkuDetailsAsync(
BillingClient.SkuType.INAPP, productKeys
) { billingResult: BillingResult, skuDetailsList: List<SkuDetails>? ->
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
Log.w(
TAG,
"Unsuccessful query for type: " + BillingClient.SkuType.INAPP
+ ". Error code: " + billingResult.responseCode
)
} else if (skuDetailsList != null && skuDetailsList.isNotEmpty()) {
// val showChargeList: MutableList<FirstChargeGoods> = ArrayList()
for (chargeBean in chargeBeanList) {
for (skuDetails in skuDetailsList) {
if (skuDetails.sku == chargeBean.chargeProdId) {
chargeBean.skuDetails = skuDetails
// showChargeList.add(chargeBean)
break
}
}
}
}
}
}
/*商品更新回调*/
@SuppressLint("CheckResult")
override fun onPurchasesUpdated(purchases: List<Purchase>) {
for (purchase in purchases) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED &&
purchase.accountIdentifiers != null
) {
PayModel.get().verifyOrder(
purchase.accountIdentifiers!!.obfuscatedAccountId,
purchase.skus[0],
purchase.packageName,
purchase.purchaseToken
)
.compose(bindToLifecycle())
.subscribe(
{ token: String? ->
//L.i("token=" + token);
billingManager.consumeAsync(token)
var skuDetails: SkuDetails? = null
val goodList = goodsList
if (goodList != null && goodList.isNotEmpty()) {
for (datum in goodList) {
if (datum.chargeProdId == purchase.skus[0]) {
skuDetails = datum.skuDetails
break
}
}
}
if (skuDetails != null) {
val eventValue: MutableMap<String, Any> =
HashMap()
eventValue[AFInAppEventParameterName.CONTENT_TYPE] = "Gold"
eventValue[AFInAppEventParameterName.QUANTITY] = 1
eventValue[AFInAppEventParameterName.CONTENT_ID] = purchase.orderId
eventValue[AFInAppEventParameterName.REVENUE] =
skuDetails.priceAmountMicros / 1000000f
eventValue["Price"] = skuDetails.price
eventValue[AFInAppEventParameterName.CURRENCY] =
skuDetails.priceCurrencyCode
AppsFlyerLib.getInstance().logEvent(
applicationContext,
AFInAppEventType.PURCHASE,
eventValue
)
}
}
) { throwable: Throwable ->
if (throwable !is IgnoreException) {
SingleToastUtil.showToast(throwable.message)
}
}
}
}
Log.i(TAG, "onPurchasesUpdated")
}
override fun onConsumeFinished(token: String?, result: Int) {
}
override fun onFailedHandle(result: Int) {
}
/*购买商品*/
@SuppressLint("CheckResult")
fun buyProduct(skuDetails: SkuDetails?) {
if (skuDetails != null) {
Log.d(TAG, "BuyProduct:" + skuDetails.sku)
PayModel.get().placeOrder(skuDetails.sku)
.compose(bindToLifecycle())
.subscribe(
{ recordId: PayRecordId ->
billingManager.initiatePurchaseFlow(
skuDetails,
recordId.recordId
)
}
) { throwable: Throwable ->
SingleToastUtil.showToast(
throwable.message
)
}
} else {
Log.w(TAG, "skuDetails ==null")
}
}
override fun onResume() {
super.onResume()
if (billingManager.isServiceConnected) {
billingManager.onQueryPurchases()
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
billingManager.destroy()
}
private fun updateCurrGoods(firstChargeGoods: FirstChargeGoods?) {
@@ -217,25 +363,4 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
finish()
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
override fun onBillingClientSetupFinished() {
}
override fun onPurchasesUpdated(purchases: MutableList<Purchase>?) {
}
override fun onConsumeFinished(token: String?, result: Int) {
}
override fun onFailedHandle(result: Int) {
}
}

View File

@@ -197,6 +197,12 @@ public class HomeTabHomeFragment extends BaseFragment {
EventBus.getDefault().unregister(this);
}
@Override
public void onResume() {
super.onResume();
if (isResumed()) getData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
if (isResumed()) getData();

View File

@@ -360,38 +360,38 @@ class MeFragment : BaseFragment(), View.OnClickListener {
)
)
R.id.me_item_vip -> {
CommonWebViewActivity.start(context, UriProvider.getOfficialPay(5))
// val channel = AppMetaDataUtil.getChannelID()
// if (channel.equals("google")) {
// VipMainActivity.start(mContext)
// StatisticManager.Instance()
// .onEvent(
// StatisticsProtocol.EVENT_VIP_ENTRANCE_ME_CLICK,
// getString(R.string.me_noble_my_entry_click_event)
// )
// //后面产品新加的
// StatisticManager.Instance()
// .onEvent(
// StatisticsProtocol.EVENT_USERCENTER_NOBLE_CARD_CLICK,
// getString(R.string.me_Individual_center_noble_card_card_click)
// )
// } else {
// CommonWebViewActivity.start(context, UriProvider.getOfficialPay(5))
// }
// CommonWebViewActivity.start(context, UriProvider.getOfficialPay(5))
val channel = AppMetaDataUtil.getChannelID()
if (channel.equals("google")) {
VipMainActivity.start(mContext)
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_VIP_ENTRANCE_ME_CLICK,
getString(R.string.me_noble_my_entry_click_event)
)
//后面产品新加的
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_USERCENTER_NOBLE_CARD_CLICK,
getString(R.string.me_Individual_center_noble_card_card_click)
)
} else {
CommonWebViewActivity.start(context, UriProvider.getOfficialPay(5))
}
}
R.id.me_item_wallet -> {
CommonWebViewActivity.start(context, UriProvider.getOfficialPay(4))
// val channel = AppMetaDataUtil.getChannelID()
// if (channel.equals("google")) {
// ChargeActivity.start(mContext)
// StatisticManager.Instance()
// .onEvent(
// StatisticsProtocol.EVENT_USERCENTER_RECHARGE_CARD_CLICK,
// getString(R.string.me_personal_center_recharge_card_click)
// )
// } else {
// CommonWebViewActivity.start(context, UriProvider.getOfficialPay(4))
// }
// CommonWebViewActivity.start(context, UriProvider.getOfficialPay(4))
val channel = AppMetaDataUtil.getChannelID()
if (channel.equals("google")) {
ChargeActivity.start(mContext)
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_USERCENTER_RECHARGE_CARD_CLICK,
getString(R.string.me_personal_center_recharge_card_click)
)
} else {
CommonWebViewActivity.start(context, UriProvider.getOfficialPay(4))
}
}
R.id.ll_room -> {
//我的房间,开房

View File

@@ -93,7 +93,7 @@ public class ModifyPwdActivity extends BaseBindingActivity<ActivityModifyPwdBind
private void setModifyPwdUI() {
initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_modifypwdactivity_04));
mBinding.btnForget.setVisibility(View.GONE);
mBinding.edCurrentPwd.setTitleHint(ResUtil.getString(R.string.ui_setting_modifypwdactivity_05));
mBinding.edCurrentPwd.setEditHint(ResUtil.getString(R.string.ui_setting_modifypwdactivity_06));
mBinding.edPwd.setTitleHint(ResUtil.getString(R.string.ui_setting_modifypwdactivity_07));

View File

@@ -7,6 +7,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.trello.rxlifecycle3.android.FragmentEvent
import com.yizhuan.erban.R
import com.yizhuan.erban.UIHelper
import com.yizhuan.erban.avroom.ButtonItemFactory
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener
import com.yizhuan.erban.community.helper.ShareDynamicHelper
@@ -14,29 +15,45 @@ import com.yizhuan.erban.databinding.FragmentUserinfoDynamicBinding
import com.yizhuan.erban.ui.user.adapter.UserInfoDynamicAdapter
import com.yizhuan.erban.ui.user.viewmodel.UserInfoViewModel
import com.yizhuan.erban.ui.widget.ButtonItem
import com.yizhuan.erban.ui.widget.recyclerview.decoration.VerticalDecoration
import com.yizhuan.erban.ui.widget.recyclerview.decoration.HorizontalDecoration
import com.yizhuan.xchat_android_constants.XChatConstants
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean
import com.yizhuan.xchat_android_core.community.dynamic.DynamicModel
import com.yizhuan.xchat_android_core.community.event.DynamicRefreshEvent
import com.yizhuan.xchat_android_core.statistic.StatisticManager
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserDetailInfo
import com.yizhuan.xchat_android_core.utils.net.BeanObserver
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.SizeUtils
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@ActLayoutRes(R.layout.fragment_userinfo_dynamic)
class UserInfoDynamicFragment : BaseViewBindingFragment<FragmentUserinfoDynamicBinding>() {
private val vm by activityViewModels<UserInfoViewModel>()
private var dynamicAdapter: UserInfoDynamicAdapter? = null
override fun init() {
EventBus.getDefault().register(this)
vm.userInfoDetailData.observe(this, Observer { dataBean: UserDetailInfo.DataBean ->
initDynamicList(dataBean.dynamicInfo)
})
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onDynamicRefreshEvent(event: DynamicRefreshEvent?) {
if (isResumed) {
vm.userInfoDetailData.observe(this, Observer { dataBean: UserDetailInfo.DataBean ->
initDynamicList(dataBean.dynamicInfo)
})
}
}
/**
* 动态列表
*
@@ -45,23 +62,48 @@ class UserInfoDynamicFragment : BaseViewBindingFragment<FragmentUserinfoDynamicB
private fun initDynamicList(list: List<WorldDynamicBean>) {
if (dynamicAdapter == null) {
binding.rvDynamic.layoutManager = LinearLayoutManager(mContext)
binding.rvDynamic.addItemDecoration(
VerticalDecoration(
SizeUtils.dp2px(mContext, 15f),
false,
false
)
)
binding.rvDynamic.addItemDecoration(HorizontalDecoration(SizeUtils.dp2px(mContext, 15f), false, false))
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 dataList: MutableList<ButtonItem> =
ArrayList()
val list: MutableList<ButtonItem> = ArrayList()
if (!UserModel.get().isMyseft(bean.uid)) {
val item = ButtonItem(getString(R.string.me_report)) {
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)
) {
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_WORLD_REPORT_MOMENTS,
getString(R.string.me_report_the_dynamic)
@@ -71,7 +113,7 @@ class UserInfoDynamicFragment : BaseViewBindingFragment<FragmentUserinfoDynamicB
XChatConstants.REPORT_TYPE_DYNAMIC_SQUARE
)
}
dataList.add(item)
list.add(item)
}
if (UserModel.get().isMyseft(bean.uid) ||
isThisWorldOwner(bean)
@@ -79,9 +121,9 @@ class UserInfoDynamicFragment : BaseViewBindingFragment<FragmentUserinfoDynamicB
val item = ButtonItem(
getString(R.string.me_delete)
) { deleteDynamic(pos, dynamicAdapter) }
dataList.add(item)
list.add(item)
}
dialogManager.showCommonPopupDialog(dataList, getString(R.string.me_cancel))
dialogManager.showCommonPopupDialog(list, getString(R.string.cancel))
} else if (view.id == R.id.ll_share) {
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_WORLD_SHARE_MOMENTS,
@@ -132,4 +174,10 @@ class UserInfoDynamicFragment : BaseViewBindingFragment<FragmentUserinfoDynamicB
private fun isThisWorldOwner(bean: WorldDynamicBean?): Boolean {
return bean != null && bean.worldUid == AuthModel.get().currentUid
}
override fun onDestroyView() {
EventBus.getDefault().unregister(this)
super.onDestroyView()
}
}

View File

@@ -40,7 +40,7 @@
android:drawableTop="@drawable/ic_room_report"
android:drawablePadding="12dp"
android:gravity="center"
android:text="@string/layout_dialog_exit_room_01"
android:text="@string/me_shield_report"
android:textColor="@color/white"
android:textSize="12sp" />

View File

@@ -988,7 +988,15 @@
<string name="me_data">資料</string>
<string name="me_dynamic">動態</string>
<string name="me_gift_wall">禮物墻</string>
<string name="me_shield_room">屏蔽房間</string>
<string name="me_shield_report">屏蔽舉報</string>
<string name="me_shield_success">屏蔽成功</string>
<string name="me_block_success">拉黑成功</string>
<string name="me_report">舉報</string>
<string name="me_shield">屏蔽</string>
<string name="me_report_dynamic">舉報動態或用戶</string>
<string name="me_shield_dynamic">屏蔽動態</string>
<string name="me_block">拉黑用戶</string>
<string name="me_report_the_dynamic">舉報動態-區分-動態廣場</string>
<string name="me_delete">刪除</string>
<string name="me_cancel">取消</string>
@@ -3153,7 +3161,7 @@
<string name="layout_dialog_custom_confirm_send_gold_03">昵稱昵稱</string>
<string name="layout_dialog_custom_confirm_send_gold_04">轉贈1000鉆石</string>
<string name="layout_dialog_custom_one_show_tips_01">是否進行操作</string>
<string name="layout_dialog_exit_room_01">舉報房間</string>
<string name="layout_dialog_exit_room_01">舉報房間或用戶</string>
<string name="layout_dialog_exit_room_02">收起房間</string>
<string name="layout_dialog_exit_room_03">退出房間</string>
<string name="layout_dialog_exit_room_04">為你推薦</string>

View File

@@ -33,6 +33,7 @@ import com.netease.nim.uikit.business.session.emoji.MoonUtil;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.ButtonItemFactory;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -44,6 +45,7 @@ import com.yizhuan.erban.community.helper.ShareDynamicHelper;
import com.yizhuan.erban.community.photo.BigPhotoActivity;
import com.yizhuan.erban.community.photo.DynamicImageAdapter;
import com.yizhuan.erban.community.photo.PagerOption;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.community.utils.ObjectTypeHelper;
import com.yizhuan.erban.community.widget.DynamicNickDetailWidget;
import com.yizhuan.erban.community.widget.ExpandableTextView;
@@ -67,11 +69,14 @@ import com.yizhuan.xchat_android_core.community.bean.comment.ReplyResult;
import com.yizhuan.xchat_android_core.community.dynamic.DynamicDetailModel;
import com.yizhuan.xchat_android_core.community.dynamic.DynamicModel;
import com.yizhuan.xchat_android_core.community.event.DynamicDetailFinishEvent;
import com.yizhuan.xchat_android_core.community.event.DynamicPublishEvent;
import com.yizhuan.xchat_android_core.community.event.DynamicRefreshEvent;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;
@@ -770,7 +775,33 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
private void header_more() {
List<ButtonItem> list = new ArrayList<>();
if (!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem item = new ButtonItem(ResUtil.getString(R.string.dynamic_view_dynamicdetailactivity_018), () -> {
ButtonItem item = new ButtonItem(getString(R.string.me_shield_dynamic), () -> {
UserModel.get().addReport(bean.getDynamicId(), 0)
.subscribe(new BeanObserver<String>() {
@Override
public void onErrorMsg(String error) {
getDialogManager().dismissDialog();
toast(error);
}
@Override
public void onSuccess(String s) {
getDialogManager().dismissDialog();
toast(ResUtil.getString(R.string.me_shield_success));
EventBus.getDefault().post(new DynamicRefreshEvent());
finish();
}
});
});
list.add(item);
}
if(!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem blackListItem = ButtonItemFactory.createAddToBlackListItem(
getDialogManager(), String.valueOf(bean.getUid()));
list.add(blackListItem);
}
if (!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem item = new ButtonItem(getString(R.string.me_report_dynamic), () -> {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_WORLD_REPORT_MOMENTS,
ResUtil.getString(R.string.dynamic_view_dynamicdetailactivity_019));
UIHelper.showReportPage(context, bean.getUid(),
@@ -783,7 +814,7 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
ButtonItem item = new ButtonItem(ResUtil.getString(R.string.dynamic_view_dynamicdetailactivity_020), () -> deleteDynamic(bean));
list.add(item);
}
getDialogManager().showCommonPopupDialog(list, ResUtil.getString(R.string.dynamic_view_dynamicdetailactivity_021));
getDialogManager().showCommonPopupDialog(list, getString(R.string.cancel));
}
/**

View File

@@ -20,6 +20,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.ButtonItemFactory;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.common.EmptyViewHelper;
@@ -40,14 +41,17 @@ import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicListResult;
import com.yizhuan.xchat_android_core.community.dynamic.DynamicModel;
import com.yizhuan.xchat_android_core.community.event.DynamicPublishEvent;
import com.yizhuan.xchat_android_core.community.event.DynamicRefreshEvent;
import com.yizhuan.xchat_android_core.community.square.SquareModel;
import com.yizhuan.xchat_android_core.miniworld.bean.MiniWorldInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -151,7 +155,36 @@ public class SquareDynamicFragment extends BaseMvpFragment<IMiniWorldCategoryVie
if (view.getId() == R.id.iv_more) {
List<ButtonItem> list = new ArrayList<>();
if (!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem item = new ButtonItem(getString(R.string.me_report), () -> {
ButtonItem item = new ButtonItem(getString(R.string.me_shield_dynamic), () -> {
UserModel.get().addReport(bean.getDynamicId(), 0)
.subscribe(new BeanObserver<String>() {
@Override
public void onErrorMsg(String error) {
getDialogManager().dismissDialog();
toast(error);
}
@Override
public void onSuccess(String s) {
getDialogManager().dismissDialog();
toast(ResUtil.getString(R.string.me_shield_success));
if (squareType == SquareFragment.TAB_TYPE_RECOMMEND) {
adapter.notifyItemRemoved(pos + 1);
}else {
adapter.notifyItemRemoved(pos);
}
}
});
});
list.add(item);
}
if(!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem blackListItem = ButtonItemFactory.createAddToBlackListItem(
getDialogManager(), String.valueOf(bean.getUid()));
list.add(blackListItem);
}
if (!UserModel.get().isMyseft(bean.getUid())) {
ButtonItem item = new ButtonItem(getString(R.string.me_report_dynamic), () -> {
UIHelper.showReportPage(getActivity(), bean.getUid(),
XChatConstants.REPORT_TYPE_DYNAMIC_SQUARE);
});
@@ -310,6 +343,11 @@ public class SquareDynamicFragment extends BaseMvpFragment<IMiniWorldCategoryVie
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onDynamicRefreshEvent(DynamicRefreshEvent event) {
loadData(true);
}
@Override
public int getRootLayoutId() {
return 0;
@@ -362,7 +400,7 @@ public class SquareDynamicFragment extends BaseMvpFragment<IMiniWorldCategoryVie
public Object instantiateItem(@NonNull ViewGroup container, int position) {
RecyclerView recyclerView;
SquareTopicAdapter squareTopicAdapter;
if(cacheItemView.get(position) == null){
if (cacheItemView.get(position) == null) {
recyclerView = new RecyclerView(mContext);
ViewGroup.LayoutParams lp = recyclerView.getLayoutParams();
if (lp == null) {
@@ -387,11 +425,11 @@ public class SquareDynamicFragment extends BaseMvpFragment<IMiniWorldCategoryVie
}
});
recyclerView.setAdapter(squareTopicAdapter);
}else {
} else {
recyclerView = cacheItemView.get(position);
squareTopicAdapter = (SquareTopicAdapter) recyclerView.getAdapter();
}
if(squareTopicAdapter != null) {
if (squareTopicAdapter != null) {
squareTopicAdapter.setNewData(list.get(position));
container.addView(recyclerView);
}

View File

@@ -1,5 +1,7 @@
package com.yizhuan.xchat_android_core.pay.bean;
import com.android.billingclient.api.SkuDetails;
import java.util.ArrayList;
import lombok.Data;
@@ -15,4 +17,5 @@ public class FirstChargeGoods {
private ArrayList<FirstChargeReward> firstChargeRewardList;
private String giveMoney;
private boolean finishCharge;
private SkuDetails skuDetails;
}

View File

@@ -228,4 +228,7 @@ public interface IUserModel extends IModel {
Single<String> visitUserDetail(long uid);
Single<List<VisitorInfo>> getVisitorUserList(int pageNum, int pageSize);
Single<String> addReport(Long objId, int type);
}

View File

@@ -803,7 +803,15 @@ public final class UserModel extends BaseModel implements IUserModel {
.compose(RxHelper.handleSchedulers());
}
/**
* 舉報接口
*/
@Override
public Single<String> addReport(Long objId, int type) {
return api.addReport(objId, type)
.compose(RxHelper.handleStringData())
.compose(RxHelper.handleSchedulers());
}
private interface Api {
/**
@@ -1043,5 +1051,18 @@ public final class UserModel extends BaseModel implements IUserModel {
@GET("/uservisitrecord/visitUserList")
Single<ServiceResult<List<VisitorInfo>>> getVisitorUserList(@Query("pageNum") int pageNum,
@Query("pageSize") int pageSize);
@POST("user/paymentPasswd/modify")
Single<ServiceResult<String>> addReport(@Query("uid") String uid,
@Query("oldPasswd") String oldPasswd,
@Query("newPasswd") String newPasswd,
@Query("ticket") String ticket);
/**
* 舉報
*/
@POST("/user/black/add")
Single<ServiceResult<String>> addReport(@Query("objId") Long objId, @Query("type") int type);
}
}

View File

@@ -0,0 +1,7 @@
package com.yizhuan.xchat_android_core.community.event;
/**
* create by lvzebiao @2019/12/1
*/
public class DynamicRefreshEvent {
}

View File

@@ -1,5 +1,6 @@
package com.yizhuan.xchat_android_core.community.square;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicListResult;

View File

@@ -13,6 +13,7 @@ import java.util.List;
import io.reactivex.Single;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
@@ -58,7 +59,6 @@ public class SquareModel extends BaseModel implements ISquareModel {
.compose(RxHelper.handleCommon());
}
private interface Api {
/**
@@ -100,7 +100,6 @@ public class SquareModel extends BaseModel implements ISquareModel {
@Query("types") String types
);
}
}

View File

@@ -24,5 +24,5 @@ only_arm64=false
channel_file=channel.txt
version_name=1.0.5
version_code=105
version_name=1.0.6
version_code=106