package com.datarecovery.master.module.member; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import com.atmob.app.lib.base.BaseActivity; import com.datarecovery.master.R; import com.datarecovery.master.data.consts.EventId; import com.datarecovery.master.databinding.ActivityMemberBinding; import com.datarecovery.master.dialog.AlipayQrCodeDialog; import com.datarecovery.master.dialog.ChoosePaymentWayDialog; import com.datarecovery.master.dialog.CommonLoadingDialog; import com.datarecovery.master.dialog.MemberRetentionDialog; import com.datarecovery.master.dialog.WechatPayQrCodeDialog; import com.datarecovery.master.handler.EventHelper; import com.datarecovery.master.module.main.MainActivity; import com.datarecovery.master.module.wxrecover.WeChatRecoverActivity; import com.datarecovery.master.utils.BoxingUtil; import com.datarecovery.master.utils.GridRecoverItemDecoration; import com.datarecovery.master.utils.Maps; import com.datarecovery.master.utils.ReportUtil; import com.datarecovery.master.utils.SpannableUtil; import com.datarecovery.master.widget.InformationSwitchBanner; import com.gyf.immersionbar.ImmersionBar; import java.util.Objects; import dagger.hilt.android.AndroidEntryPoint; @AndroidEntryPoint public class MemberActivity extends BaseActivity { public static final String MEMBER_TYPE = "member_type"; private MemberViewModel memberViewModel; private GoodsItemAdapter goodsItemAdapter; private NormalScenesAdapter normalScenesAdapter; private GridLayoutManager gridLayoutManager; private GridRecoverItemDecoration gridLayoutItemDecoration; private MemberEvaluateAdapter memberEvaluateAdapter; private MemberRetentionDialog memberRetentionDialog; private ChoosePaymentWayDialog choosePaymentWayDialog; private CommonLoadingDialog commonLoadingDialog; private AlipayQrCodeDialog alipayQrCodeDialog; private WechatPayQrCodeDialog wechatPayQrCodeDialog; public static void start(Context context, @MemberType String type) { Intent intent = new Intent(context, MemberActivity.class); if (!(context instanceof Activity)) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } intent.putExtra(MEMBER_TYPE, type); context.startActivity(intent); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); initObserver(); initData(); } private void initData() { Intent intent = getIntent(); if (intent != null) { memberViewModel.setMemberType(intent.getStringExtra(MEMBER_TYPE)); } initTextViewBanner(); } @SuppressLint("UseCompatLoadingForDrawables") private void initTextViewBanner() { InformationSwitchBanner mTextSwitchBanner = new InformationSwitchBanner(this, binding.viewSwitcher); mTextSwitchBanner.setTextColor(getResources().getDrawable(R.drawable.icon_memeber_buy_avatar), 6, getResources().getColor(com.atmob.app.base.R.color.white), getResources().getColor(com.atmob.app.base.R.color.white)); mTextSwitchBanner.update(memberViewModel.getInformationList()); } private void initView() { addTopStatusBarHeight(binding.toolBar); goodsItemAdapter = new GoodsItemAdapter(this); binding.memberDetailList.setAdapter(goodsItemAdapter); binding.memberDetailList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); goodsItemAdapter.setOnItemSelectListener(goodsBean -> memberViewModel.setSelectBean(goodsBean)); normalScenesAdapter = new NormalScenesAdapter(); gridLayoutManager = new GridLayoutManager(this, 2); gridLayoutItemDecoration = new GridRecoverItemDecoration(2, 0, 0.232926829268293f, false); binding.scenesRyView.addItemDecoration(gridLayoutItemDecoration); binding.scenesRyView.setLayoutManager(gridLayoutManager); binding.scenesRyView.setAdapter(normalScenesAdapter); memberEvaluateAdapter = new MemberEvaluateAdapter(); binding.userEvaluateRyView.setLayoutManager(new LinearLayoutManager(this)); binding.userEvaluateRyView.setAdapter(memberEvaluateAdapter); binding.toolBar.setNavigationOnClickListener(v -> onBackPressed()); SpannableUtil.getAgreementSpannableStringBuilder(binding.tvBuyMemberDesc, getResources().getString(R.string.member_service_description_all), new String[]{getResources().getString(R.string.member_service_description)}, Color.parseColor("#FCEAC7"), false, v -> { ServiceDescriptionActivity.start(this, memberViewModel.getServiceContentTxt()); EventHelper.report(EventId.hf1001133, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberViewModel.getMemberType()))); } ); } private void initObserver() { memberViewModel.getOnSubscribeSuccessEvent().observe(this, orderId -> { dismissQrCodeDialog(orderId); setPaySuccessGo(); }); memberViewModel.getScenesDataList().observe(this, strings -> normalScenesAdapter.setData(strings)); memberViewModel.getShowAliQRPaymentEvent().observe(this, this::showAlipayQrCodeDialog); memberViewModel.getShowWxQRPaymentEvent().observe(this, this::showWxQrCodeDialog); memberViewModel.getShowLoadingEvent().observe(this, this::showLoading); memberViewModel.getMemberGoodsList().observe(this, goodsItemAdapter::submit); memberViewModel.getEvaluateList().observe(this, evaluateBeans -> memberEvaluateAdapter.submit(evaluateBeans)); memberViewModel.getShowChoicePayWayDialog().observe(this, o -> showChoosePaymentWayDialog()); } private void setPaySuccessGo() { finish(); switch (memberViewModel.getMemberType()) { case MemberType.APP_WX_MESSAGE_RECOVER: WeChatRecoverActivity.start(this, MemberType.APP_WX_MESSAGE_RECOVER); break; case MemberType.APP_WX_FRIEND_RECOVER: WeChatRecoverActivity.start(this, MemberType.APP_WX_FRIEND_RECOVER); break; case MemberType.APP_IMAGE_RECOVER: MainActivity.startToTargetActivity(this, MemberType.APP_IMAGE_RECOVER); break; case MemberType.APP_FILE_RECOVER: MainActivity.startToTargetActivity(this, MemberType.APP_FILE_RECOVER); break; case MemberType.APP_VIDEO_RECOVER: MainActivity.startToTargetActivity(this, MemberType.APP_VIDEO_RECOVER); break; case MemberType.APP_AUDIO_RECOVER: MainActivity.startToTargetActivity(this, MemberType.APP_AUDIO_RECOVER); break; case MemberType.APP_IMAGE_CLEAN: MainActivity.startToTargetActivity(this, MemberType.APP_IMAGE_CLEAN); break; } } private void showWxQrCodeDialog(Pair params) { if (params == null || params.first == null || params.second == null) { return; } if (wechatPayQrCodeDialog == null) { wechatPayQrCodeDialog = new WechatPayQrCodeDialog(this); } wechatPayQrCodeDialog.show(params.first, params.second, (orderId, payWay, showLoading, isReportPay) -> memberViewModel.queryOrderStatus(orderId, payWay, showLoading, isReportPay)); } private void showAlipayQrCodeDialog(Pair params) { if (params == null || params.first == null || params.second == null) { return; } if (alipayQrCodeDialog == null) { alipayQrCodeDialog = new AlipayQrCodeDialog(this); } alipayQrCodeDialog.show(params.first, params.second, (orderId, payWay, showLoading, isReportPay) -> memberViewModel.queryOrderStatus(orderId, payWay, showLoading, isReportPay)); } private void dismissQrCodeDialog(String orderId) { if (alipayQrCodeDialog != null) { if (Objects.equals(orderId, alipayQrCodeDialog.getCurrentOrderId())) { alipayQrCodeDialog.dismiss(); } } if (wechatPayQrCodeDialog != null) { if (Objects.equals(orderId, wechatPayQrCodeDialog.getCurrentOrderId())) { wechatPayQrCodeDialog.dismiss(); } } } private void showLoading(Boolean show) { if (BoxingUtil.boxing(show)) { if (commonLoadingDialog == null) { commonLoadingDialog = new CommonLoadingDialog(this); commonLoadingDialog.setMessageGone(); } commonLoadingDialog.show(); } else { if (commonLoadingDialog != null) { commonLoadingDialog.dismiss(); } } } private void showChoosePaymentWayDialog() { if (choosePaymentWayDialog == null) { choosePaymentWayDialog = new ChoosePaymentWayDialog(this, this, memberViewModel.getSubscribeTxt(), memberViewModel.getPayWayList().getValue()) .setActionHandler((payPlatform, payMethod) -> memberViewModel.submitOrder(payPlatform, payMethod)); } choosePaymentWayDialog.paymentShow(); } private void showMemberRetentionDialog() { if (memberRetentionDialog == null) { memberRetentionDialog = new MemberRetentionDialog(this) .setActionHandler(new MemberRetentionDialog.ActionHandler() { @Override public void onCloseClick() { EventHelper.report(EventId.hf1000607, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberViewModel.getMemberType()))); finish(); } @Override public void onContinueClick() { EventHelper.report(EventId.hf1000608, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberViewModel.getMemberType()))); memberViewModel.onRetainMemberSubscribeClick(); } }); } memberRetentionDialog.show(); } @Override public void onBackPressed() { if (Objects.equals(memberViewModel.getMemberType(), MemberType.APP_IMAGE_CLEAN)) { super.onBackPressed(); return; } if (!memberViewModel.isMember()) { showMemberRetentionDialog(); } else { super.onBackPressed(); } } @Override protected void configImmersion(@NonNull ImmersionBar immersionBar) { immersionBar.statusBarDarkFont(true); } @Override protected void initViewModel() { super.initViewModel(); memberViewModel = getViewModelProvider().get(MemberViewModel.class); binding.setMemberViewModel(memberViewModel); } @Override protected boolean shouldImmersion() { return true; } }