package com.datarecovery.master.dialog; import android.content.Context; import androidx.annotation.NonNull; import com.atmob.app.lib.base.BaseDialog; import com.datarecovery.master.R; import com.datarecovery.master.databinding.DialogWechatPayQrCodeBinding; import com.datarecovery.master.module.member.MemberViewModel; import com.datarecovery.master.utils.QrCodeUtil; import atmob.reactivex.rxjava3.disposables.Disposable; import atmob.rxjava.utils.RxJavaUtil; @BaseDialog.FullScreen public class WechatPayQrCodeDialog extends BaseDialog { private Disposable generateQRDisposable; private @atmob.reactivex.rxjava3.annotations.NonNull Disposable queryOrderDisposable; private String orderId; private MemberViewModel memberViewModel; public WechatPayQrCodeDialog(@NonNull Context context) { super(context, R.style.Theme_Common_Dialog); binding.setOnCloseClickListener(v -> dismiss()); } @Override protected void onDismiss() { super.onDismiss(); binding.wechatPayQrCode.setImageBitmap(null); if (queryOrderDisposable != null && !queryOrderDisposable.isDisposed()) { queryOrderDisposable.dispose(); memberViewModel.queryOrderStatus(orderId, true); } if (generateQRDisposable != null && !generateQRDisposable.isDisposed()) { generateQRDisposable.dispose(); } } public void show(String qrCodeData, String orderId, MemberViewModel memberViewModel) { this.memberViewModel = memberViewModel; this.orderId = orderId; this.queryOrderDisposable = memberViewModel.queryOrderStatus(orderId, false); if (generateQRDisposable != null && !generateQRDisposable.isDisposed()) { generateQRDisposable.dispose(); } generateQRDisposable = RxJavaUtil.doInBackground(() -> QrCodeUtil.generateQrCode(qrCodeData, 300, R.drawable.icon_wechat_payment), bitmap -> binding.wechatPayQrCode.setImageBitmap(bitmap), throwable -> { // TODO: 24/8/2023 show error }); super.show(); } public String getCurrentOrderId() { return orderId; } }