Kaynağa Gözat

订阅页增加loading

zk 1 yıl önce
ebeveyn
işleme
1c6e682850

+ 12 - 0
app/src/main/java/com/atmob/voiceai/dialog/CommonLoadingDialog.java

@@ -1,6 +1,8 @@
 package com.atmob.voiceai.dialog;
 
 import android.content.Context;
+import android.text.TextUtils;
+import android.view.View;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.StringRes;
@@ -22,6 +24,16 @@ public class CommonLoadingDialog extends BaseDialog<DialogCommonLoadingBinding>
         return this;
     }
 
+    public CommonLoadingDialog setMessage(String message) {
+        if (TextUtils.isEmpty(message)) {
+            binding.commonLoadingText.setVisibility(View.GONE);
+        } else {
+            binding.commonLoadingText.setVisibility(View.VISIBLE);
+            binding.commonLoadingText.setText(message);
+        }
+        return this;
+    }
+
     @Override
     protected boolean useQueue() {
         return false;

+ 17 - 0
app/src/main/java/com/atmob/voiceai/module/subscription/SubscriptionPageActivity.java

@@ -21,6 +21,7 @@ import com.atmob.common.ui.SizeUtil;
 import com.atmob.voiceai.data.api.bean.GoodsBean;
 import com.atmob.voiceai.data.consts.EventId;
 import com.atmob.voiceai.databinding.ActivitySubscriptionPageBinding;
+import com.atmob.voiceai.dialog.CommonLoadingDialog;
 import com.atmob.voiceai.dialog.SubRetentionDialog;
 import com.atmob.voiceai.handlers.EventHandler;
 import com.atmob.voiceai.utils.BoxingUtil;
@@ -40,6 +41,8 @@ public class SubscriptionPageActivity extends BaseActivity<ActivitySubscriptionP
 
     private SubRetentionDialog subRetentionDialog;
 
+    private CommonLoadingDialog loadingDialog;
+
     public static void start(Context context) {
         Intent intent = new Intent(context, SubscriptionPageActivity.class);
         if (!(context instanceof Activity)) {
@@ -56,6 +59,7 @@ public class SubscriptionPageActivity extends BaseActivity<ActivitySubscriptionP
     }
 
     private void initObserver() {
+        subscriptionPageViewModel.getShowLoading().observe(this, data -> showLoadingDialog(BoxingUtil.boxing(data.getFirst()), data.getSecond()));
         subscriptionPageViewModel.getShowRetentionDialogEvent().observe(this, o -> showSubRetentionDialog());
         subscriptionPageViewModel.getFinishEvent().observe(this, o -> finish());
         subscriptionPageViewModel.getGoodsList().observe(this, list -> subscriptionAdapter.submitList(list));
@@ -67,6 +71,19 @@ public class SubscriptionPageActivity extends BaseActivity<ActivitySubscriptionP
     }
 
 
+    public void showLoadingDialog(boolean show, String msg) {
+        if (show) {
+            if (loadingDialog == null) {
+                loadingDialog = new CommonLoadingDialog(this);
+            }
+            loadingDialog.setMessage(msg);
+            loadingDialog.show();
+        } else if (loadingDialog != null) {
+            loadingDialog.dismiss();
+        }
+    }
+
+
     private void showSubRetentionDialog() {
         if (subRetentionDialog == null) {
             subRetentionDialog = new SubRetentionDialog(this);

+ 20 - 1
app/src/main/java/com/atmob/voiceai/module/subscription/SubscriptionPageViewModel.java

@@ -48,6 +48,7 @@ import atmob.reactivex.rxjava3.functions.Function;
 import atmob.reactivex.rxjava3.schedulers.Schedulers;
 import atmob.rxjava.utils.RxJavaUtil;
 import dagger.hilt.android.lifecycle.HiltViewModel;
+import kotlin.Pair;
 
 @HiltViewModel
 public class SubscriptionPageViewModel extends BaseViewModel {
@@ -65,6 +66,7 @@ public class SubscriptionPageViewModel extends BaseViewModel {
     private List<PayOptionsBean> payList;
     private final MutableLiveData<CharSequence> autoRenewableText = new MutableLiveData<>();
     private final MutableLiveData<CharSequence> subCancelTxt = new MutableLiveData<>();
+    private final SingleLiveEvent<Pair<Boolean, String>> showLoading = new SingleLiveEvent<>();
     private final MemberRepository memberRepository;
     private GoodsBean checkGoodsBean;
     private boolean isRequestSubmitOrder;
@@ -80,6 +82,10 @@ public class SubscriptionPageViewModel extends BaseViewModel {
         EventHandler.report(EventId.purchase_001);
     }
 
+    public LiveData<Pair<Boolean, String>> getShowLoading() {
+        return showLoading;
+    }
+
     public void setCheckGoodsBean(GoodsBean checkGoodsBean) {
         this.checkGoodsBean = checkGoodsBean;
     }
@@ -140,16 +146,20 @@ public class SubscriptionPageViewModel extends BaseViewModel {
                     @Override
                     public void onSubscribe(@NonNull Disposable d) {
                         addDisposable(d);
+                        showLoading.setValue(new Pair<>(true, ContextUtil.getContext().getString(R.string.query_order_status_loading_txt)));
                     }
 
                     @Override
                     public void onSuccess(@NonNull Object object) {
                         EventHandler.report(EventId.restoresuccess_001);
+                        showLoading.setValue(new Pair<>(false, null));
+                        finishEvent.call();
                         ToastUtil.show(R.string.member_restore_success, ToastUtil.LENGTH_SHORT);
                     }
 
                     @Override
                     public void onError(@NonNull Throwable e) {
+                        showLoading.setValue(new Pair<>(false, null));
                         if (e instanceof RxHttpHandler.ServerErrorException) {
                             RxHttpHandler.ServerErrorException serverErrorException = (RxHttpHandler.ServerErrorException) e;
                             if (serverErrorException.getCode() != ErrorCode.ERROR_SUBSCRIPTION_NOT_FOUND) {
@@ -239,17 +249,20 @@ public class SubscriptionPageViewModel extends BaseViewModel {
                     public void onSubscribe(@NonNull Disposable d) {
                         addDisposable(d);
                         isRequestSubmitOrder = true;
+                        showLoading.setValue(new Pair<>(true, null));
                     }
 
                     @Override
                     public void onSuccess(@NonNull OrderPayResponse orderPayResponse) {
                         isRequestSubmitOrder = false;
+                        showLoading.setValue(new Pair<>(false, null));
                         requestPayment(checkGoodsBean, orderPayResponse.getOutTradeNo());
                     }
 
                     @Override
                     public void onError(@NonNull Throwable e) {
                         isRequestSubmitOrder = false;
+                        showLoading.setValue(new Pair<>(false, null));
                         ErrorHelper.errorThrowableToast(e, ToastUtil.LENGTH_SHORT);
                     }
                 });
@@ -284,10 +297,16 @@ public class SubscriptionPageViewModel extends BaseViewModel {
                     @Override
                     public void onSubscribe(@NonNull Disposable d) {
                         addDisposable(d);
+                        addDisposable(RxJavaUtil.timer(25, TimeUnit.SECONDS, () -> {
+                            showLoading.setValue(new Pair<>(false, null));
+                            ToastUtil.show(R.string.query_order_time_out, ToastUtil.LENGTH_SHORT);
+                        }));
+                        showLoading.setValue(new Pair<>(true, ContextUtil.getContext().getString(R.string.query_order_status_loading_txt)));
                     }
 
                     @Override
                     public void onSuccess(@NonNull Boolean aBoolean) {
+                        showLoading.setValue(new Pair<>(false, null));
                         if (BoxingUtil.boxing(aBoolean)) {
                             ToastUtil.show(R.string.pay_success, ToastUtil.LENGTH_SHORT);
                             finishEvent.call();
@@ -296,7 +315,7 @@ public class SubscriptionPageViewModel extends BaseViewModel {
 
                     @Override
                     public void onError(@NonNull Throwable e) {
-
+                        showLoading.setValue(new Pair<>(false, null));
                     }
                 });
     }

+ 0 - 1
app/src/main/java/com/atmob/voiceai/sdk/firebase/FirebaseHelper.java

@@ -36,7 +36,6 @@ public class FirebaseHelper {
         firebaseApp = FirebaseApp.initializeApp(application);
         onMessagingTokenChangeListeners = new ArrayList<>(2);
         firebaseAnalytics = FirebaseAnalytics.getInstance(application);
-
         getMessagingToken(this::uploadFirebaseToken);
     }
 

+ 10 - 7
app/src/main/res/layout/dialog_common_loading.xml

@@ -19,28 +19,31 @@
         app:layout_constraintWidth_percent="0.3333333333333333" />
 
     <ProgressBar
+        android:id="@+id/common_loading_progress"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:indeterminate="true"
         android:indeterminateDrawable="@drawable/progress_common_loading"
-        app:layout_constraintBottom_toBottomOf="@+id/common_loading_bg"
+        app:layout_constraintBottom_toTopOf="@+id/common_loading_text"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintEnd_toEndOf="@+id/common_loading_bg"
         app:layout_constraintStart_toStartOf="@+id/common_loading_bg"
         app:layout_constraintTop_toTopOf="@+id/common_loading_bg"
-        app:layout_constraintVertical_bias="0.3448275862068966"
+        app:layout_constraintVertical_chainStyle="packed"
         app:layout_constraintWidth_percent="0.0916666666666667" />
 
     <TextView
         android:id="@+id/common_loading_text"
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
+        android:gravity="center"
         android:layout_height="wrap_content"
+        app:layout_constraintWidth_percent="0.2777777777777778"
+        android:layout_marginTop="12dp"
+        android:text="@string/loading_txt"
         android:textColor="@color/white"
         android:textSize="14sp"
-        app:layout_constraintBottom_toBottomOf="@+id/common_loading_bg"
+        app:layout_constraintBottom_toBottomOf="@id/common_loading_bg"
         app:layout_constraintEnd_toEndOf="@+id/common_loading_bg"
         app:layout_constraintStart_toStartOf="@+id/common_loading_bg"
-        app:layout_constraintTop_toTopOf="@+id/common_loading_bg"
-        app:layout_constraintVertical_bias="0.696969696969697"
-        android:text="@string/loading_txt" />
+        app:layout_constraintTop_toBottomOf="@+id/common_loading_progress" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -114,4 +114,6 @@
     <string name="member_restore_success">Success: You have restored your subscription</string>
     <string name="sub_most_popular">Most Popular</string>
     <string name="loading_txt">loading…</string>
+    <string name="query_order_status_loading_txt">Processing</string>
+    <string name="query_order_time_out">Network abnormality, please click to restore</string>
 </resources>