diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java index a9dbffc78..8e1e9d3df 100644 --- a/app/src/main/java/com/yizhuan/erban/MainActivity.java +++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java @@ -334,7 +334,7 @@ public class MainActivity extends BaseMvpActivity NewUserChargeGiftDialog.start(context); DemoCache.saveNewUserChargeGift(2); } - checkShowAnchorCardView(); +// checkShowAnchorCardView(); } } @@ -675,7 +675,7 @@ public class MainActivity extends BaseMvpActivity EventBus.getDefault().post(new UnReadCountEvent(integer)); } }); - checkShowAnchorCardView(); +// checkShowAnchorCardView(); } @SuppressLint("CheckResult") diff --git a/app/src/main/java/com/yizhuan/erban/avroom/ButtonItemFactory.java b/app/src/main/java/com/yizhuan/erban/avroom/ButtonItemFactory.java index bd668db8c..f1169a9b9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/ButtonItemFactory.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/ButtonItemFactory.java @@ -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 diff --git a/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt b/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt index 413e15525..2d5a2012b 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt @@ -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 = ArrayList() + val item1 = ButtonItem( + ResUtil.getString(R.string.me_shield_room) + ) { + UserModel.get().addReport(roomInfo.uid, 1) + .subscribe(object : BeanObserver() { + 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 { diff --git a/app/src/main/java/com/yizhuan/erban/avroom/firstcharge/FirstChargeDialog.kt b/app/src/main/java/com/yizhuan/erban/avroom/firstcharge/FirstChargeDialog.kt index f27628773..246cf053f 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/firstcharge/FirstChargeDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/firstcharge/FirstChargeDialog.kt @@ -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(), } private const val BIND_CODE_GOLD = 200 + private const val TAG = "FirstChargeDialog" } @SuppressLint("CheckResult") @@ -87,12 +97,12 @@ class FirstChargeDialog : BaseViewBindingActivity(), } 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() @@ -103,6 +113,22 @@ class FirstChargeDialog : BaseViewBindingActivity(), }) .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(), 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(), binding.rbPlanC.text = "${goodsList[2].chargeMoney}$" } } + initProduceList(goodsList) + } + + private fun initProduceList(chargeBeanList: List) { + val productKeys: MutableList = ArrayList() + for (chargeBean in chargeBeanList) { + productKeys.add(chargeBean.chargeProdId) + } + billingManager.querySkuDetailsAsync( + BillingClient.SkuType.INAPP, productKeys + ) { billingResult: BillingResult, skuDetailsList: List? -> + 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 = 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) { + 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 = + 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(), finish() } - override fun onDestroy() { - super.onDestroy() - EventBus.getDefault().unregister(this) - } - - override fun onBillingClientSetupFinished() { - - } - - override fun onPurchasesUpdated(purchases: MutableList?) { - - } - - override fun onConsumeFinished(token: String?, result: Int) { - - } - - override fun onFailedHandle(result: Int) { - - } - } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java index ef1b060a1..ecac9b326 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java @@ -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(); diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt index ad928eb1c..af8e1299b 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt @@ -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 -> { //我的房间,开房 diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java b/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java index 950609085..bb2f5eacd 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/ModifyPwdActivity.java @@ -93,7 +93,7 @@ public class ModifyPwdActivity extends BaseBindingActivity() { private val vm by activityViewModels() 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) { 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 = - ArrayList() + val list: MutableList = 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() { + 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 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index db907259d..3a8e7029a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -988,7 +988,15 @@ 資料 動態 禮物墻 + 屏蔽房間 + 屏蔽舉報 + 屏蔽成功 + 拉黑成功 舉報 + 屏蔽 + 舉報動態或用戶 + 屏蔽動態 + 拉黑用戶 舉報動態-區分-動態廣場 刪除 取消 @@ -3153,7 +3161,7 @@ 昵稱昵稱 轉贈1000鉆石? 是否進行操作 - 舉報房間 + 舉報房間或用戶 收起房間 退出房間 為你推薦 diff --git a/app/src/module_community/java/com/yizhuan/erban/community/dynamic/view/DynamicDetailActivity.java b/app/src/module_community/java/com/yizhuan/erban/community/dynamic/view/DynamicDetailActivity.java index 0571c0560..b0fa08cdb 100644 --- a/app/src/module_community/java/com/yizhuan/erban/community/dynamic/view/DynamicDetailActivity.java +++ b/app/src/module_community/java/com/yizhuan/erban/community/dynamic/view/DynamicDetailActivity.java @@ -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 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() { + @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)); } /** diff --git a/app/src/module_community/java/com/yizhuan/erban/community/square/SquareDynamicFragment.java b/app/src/module_community/java/com/yizhuan/erban/community/square/SquareDynamicFragment.java index 073318999..c1a854e5e 100644 --- a/app/src/module_community/java/com/yizhuan/erban/community/square/SquareDynamicFragment.java +++ b/app/src/module_community/java/com/yizhuan/erban/community/square/SquareDynamicFragment.java @@ -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 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() { + @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 firstChargeRewardList; private String giveMoney; private boolean finishCharge; + private SkuDetails skuDetails; } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/IUserModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/IUserModel.java index ae9b9e57c..721712433 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/IUserModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/IUserModel.java @@ -228,4 +228,7 @@ public interface IUserModel extends IModel { Single visitUserDetail(long uid); Single> getVisitorUserList(int pageNum, int pageSize); + + Single addReport(Long objId, int type); + } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java index 992b53723..a11304c1e 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java @@ -803,7 +803,15 @@ public final class UserModel extends BaseModel implements IUserModel { .compose(RxHelper.handleSchedulers()); } - + /** + * 舉報接口 + */ + @Override + public Single 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>> getVisitorUserList(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize); + + @POST("user/paymentPasswd/modify") + Single> addReport(@Query("uid") String uid, + @Query("oldPasswd") String oldPasswd, + @Query("newPasswd") String newPasswd, + @Query("ticket") String ticket); + + /** + * 舉報 + */ + @POST("/user/black/add") + Single> addReport(@Query("objId") Long objId, @Query("type") int type); + } } diff --git a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/event/DynamicRefreshEvent.java b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/event/DynamicRefreshEvent.java new file mode 100644 index 000000000..2bd6e8a69 --- /dev/null +++ b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/event/DynamicRefreshEvent.java @@ -0,0 +1,7 @@ +package com.yizhuan.xchat_android_core.community.event; + +/** + * create by lvzebiao @2019/12/1 + */ +public class DynamicRefreshEvent { +} diff --git a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/ISquareModel.java b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/ISquareModel.java index 1616b5149..8dfc10d76 100644 --- a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/ISquareModel.java +++ b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/ISquareModel.java @@ -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; diff --git a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/SquareModel.java b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/SquareModel.java index a79f19ca2..cae9d5ced 100644 --- a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/SquareModel.java +++ b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/square/SquareModel.java @@ -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 ); - } } diff --git a/gradle.properties b/gradle.properties index 2dfe09bf1..e03550817 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,5 +24,5 @@ only_arm64=false channel_file=channel.txt -version_name=1.0.5 -version_code=105 \ No newline at end of file +version_name=1.0.6 +version_code=106 \ No newline at end of file