WechatPayQrCodeDialog.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.datarecovery.master.dialog;
  2. import android.content.Context;
  3. import androidx.annotation.NonNull;
  4. import com.atmob.app.lib.base.BaseDialog;
  5. import com.datarecovery.master.R;
  6. import com.datarecovery.master.databinding.DialogWechatPayQrCodeBinding;
  7. import com.datarecovery.master.module.member.MemberViewModel;
  8. import com.datarecovery.master.utils.QrCodeUtil;
  9. import atmob.reactivex.rxjava3.disposables.Disposable;
  10. import atmob.rxjava.utils.RxJavaUtil;
  11. @BaseDialog.FullScreen
  12. public class WechatPayQrCodeDialog extends BaseDialog<DialogWechatPayQrCodeBinding> {
  13. private Disposable generateQRDisposable;
  14. private @atmob.reactivex.rxjava3.annotations.NonNull Disposable queryOrderDisposable;
  15. private String orderId;
  16. private MemberViewModel memberViewModel;
  17. public WechatPayQrCodeDialog(@NonNull Context context) {
  18. super(context, R.style.Theme_Common_Dialog);
  19. binding.setOnCloseClickListener(v -> dismiss());
  20. }
  21. @Override
  22. protected void onDismiss() {
  23. super.onDismiss();
  24. binding.wechatPayQrCode.setImageBitmap(null);
  25. if (queryOrderDisposable != null && !queryOrderDisposable.isDisposed()) {
  26. queryOrderDisposable.dispose();
  27. memberViewModel.queryOrderStatus(orderId, true);
  28. }
  29. if (generateQRDisposable != null && !generateQRDisposable.isDisposed()) {
  30. generateQRDisposable.dispose();
  31. }
  32. }
  33. public void show(String qrCodeData, String orderId, MemberViewModel memberViewModel) {
  34. this.memberViewModel = memberViewModel;
  35. this.orderId = orderId;
  36. this.queryOrderDisposable = memberViewModel.queryOrderStatus(orderId, false);
  37. if (generateQRDisposable != null && !generateQRDisposable.isDisposed()) {
  38. generateQRDisposable.dispose();
  39. }
  40. generateQRDisposable = RxJavaUtil.doInBackground(() -> QrCodeUtil.generateQrCode(qrCodeData, 300, R.drawable.icon_wechat_payment),
  41. bitmap -> binding.wechatPayQrCode.setImageBitmap(bitmap), throwable -> {
  42. // TODO: 24/8/2023 show error
  43. });
  44. super.show();
  45. }
  46. public String getCurrentOrderId() {
  47. return orderId;
  48. }
  49. }