Browse Source

调整先支付后登录流程

zk 2 years ago
parent
commit
16f6834eab

+ 0 - 1
app/src/main/java/com/datarecovery/master/data/repositories/AccountRepository.java

@@ -70,7 +70,6 @@ public class AccountRepository {
         payRepository.refreshOrderPageList();
         KVUtils.getDefault().putString(KEY_LOGIN_PHONE_NUM, phoneNum);
         KVUtils.getDefault().putString(KEY_LOGIN_TOKEN, token);
-
     }
 
 

+ 1 - 5
app/src/main/java/com/datarecovery/master/data/repositories/PayRepository.java

@@ -50,11 +50,7 @@ public class PayRepository {
                 .compose(RxHttpHandler.handle(true))
                 .compose(RxJavaUtil.SingleSchedule.io2Main())
                 .doOnSuccess(orderPageResponse -> {
-                    if (TextUtils.isEmpty(AccountRepository.token)) {
-                        orderList.setValue(null);
-                    } else {
-                        orderList.setValue(orderPageResponse.getList());
-                    }
+                    orderList.setValue(orderPageResponse.getList());
                 });
 
     }

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverActivity.java

@@ -68,7 +68,7 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
     }
 
     private void initPermission() {
-        FilePermissionHelper.requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
+        new FilePermissionHelper().requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
             @Override
             public void onNextStep() {
                 audioRecoverViewModel.startAudioScanning();

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/filerecover/FileRecoverActivity.java

@@ -57,7 +57,7 @@ public class FileRecoverActivity extends BaseActivity<ActivityFileRecoverBinding
     }
 
     private void initPermission() {
-        FilePermissionHelper.requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
+        new FilePermissionHelper().requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
             @Override
             public void onNextStep() {
                 fileRecoverViewModel.startFileScanning();

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/imgrecover/ImageRecoverActivity.java

@@ -83,7 +83,7 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
     }
 
     private void initPermission() {
-        FilePermissionHelper.requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
+        new FilePermissionHelper().requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
             @Override
             public void onNextStep() {
                 imageRecoverViewModel.startImageScanning();

+ 2 - 1
app/src/main/java/com/datarecovery/master/module/member/MemberActivity.java

@@ -117,8 +117,8 @@ public class MemberActivity extends BaseActivity<ActivityMemberBinding> {
         memberViewModel.getOnSubscribeSuccessEvent().observe(this, orderId -> {
             dismissQrCodeDialog(orderId);
             setPaySuccessGo();
-            finish();
         });
+        memberViewModel.getGoTargetActEvent().observe(this, o -> setPaySuccessGo());
         memberViewModel.getShowAliQRPaymentEvent().observe(this, this::showAlipayQrCodeDialog);
         memberViewModel.getShowWxQRPaymentEvent().observe(this, this::showWxQrCodeDialog);
         memberViewModel.getShowLoadingEvent().observe(this, this::showLoading);
@@ -144,6 +144,7 @@ public class MemberActivity extends BaseActivity<ActivityMemberBinding> {
     }
 
     private void setPaySuccessGo() {
+        finish();
         switch (memberViewModel.getMemberType()) {
             case MemberType.APP_WX_MESSAGE_RECOVER:
             case MemberType.APP_WX_FRIEND_RECOVER:

+ 19 - 10
app/src/main/java/com/datarecovery/master/module/member/MemberViewModel.java

@@ -65,6 +65,7 @@ public class MemberViewModel extends BaseViewModel {
     private List<SuperScenesBean> superScenesBeans;
 
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
+    private final SingleLiveEvent<?> goTargetActEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showChoicePayWayDialog = new SingleLiveEvent<>();
 
     private final SingleLiveEvent<Pair<String, String>> showWxQRPaymentEvent = new SingleLiveEvent<>();
@@ -79,6 +80,11 @@ public class MemberViewModel extends BaseViewModel {
         this.gson = gson;
     }
 
+
+    public LiveData<?> getGoTargetActEvent() {
+        return goTargetActEvent;
+    }
+
     public String getMemberType() {
         return memberType;
     }
@@ -240,11 +246,11 @@ public class MemberViewModel extends BaseViewModel {
     }
 
     public void onRetainMemberSubscribeClick() {
-        if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
-            ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
-            LoginActivity.start(ActivityUtil.getTopActivity());
-            return;
-        }
+//        if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
+//            ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
+//            LoginActivity.start(ActivityUtil.getTopActivity());
+//            return;
+//        }
         MemberGoodsBean mostBuyItem = getMostBuyItem();
         if (mostBuyItem == null) {
             return;
@@ -256,11 +262,11 @@ public class MemberViewModel extends BaseViewModel {
 
 
     public void onMemberSubscribeClick() {
-        if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
-            ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
-            LoginActivity.start(ActivityUtil.getTopActivity());
-            return;
-        }
+//        if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
+//            ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
+//            LoginActivity.start(ActivityUtil.getTopActivity());
+//            return;
+//        }
         MemberGoodsBean currentSelected = selectBean.getValue();
         if (currentSelected == null) {
             return;
@@ -384,6 +390,9 @@ public class MemberViewModel extends BaseViewModel {
                 .subscribe(aBoolean -> {
                     showLoadingEvent.setValue(false);
                     if (BoxingUtil.boxing(aBoolean)) {
+                        if (BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
+                            goTargetActEvent.call();
+                        }
                         onSubscribeSuccessEvent.setValue(orderId);
                     } else {
 

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverActivity.java

@@ -54,7 +54,7 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
     }
 
     private void initPermission() {
-        FilePermissionHelper.requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
+        new FilePermissionHelper().requestDataFilePermission(this, new FilePermissionHelper.NextStepCallback() {
             @Override
             public void onNextStep() {
                 videoRecoverViewModel.startVideoScanning();

+ 114 - 84
app/src/main/java/com/datarecovery/master/utils/FilePermissionHelper.java

@@ -1,16 +1,19 @@
 package com.datarecovery.master.utils;
 
 import android.os.Build;
+import android.text.TextUtils;
 import android.view.Gravity;
 
 import androidx.activity.ComponentActivity;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleEventObserver;
+import androidx.lifecycle.LifecycleOwner;
 
-import com.atmob.app.lib.livedata.SingleLiveEvent;
 import com.atmob.common.runtime.ContextUtil;
 import com.datarecovery.master.R;
-import com.datarecovery.master.dialog.CommonSureDialog;
+import com.datarecovery.master.data.repositories.AccountRepository;
 import com.datarecovery.master.dialog.PermissionDialog;
-import com.datarecovery.master.module.homepage.HomePageViewModel;
+import com.datarecovery.master.module.login.LoginActivity;
 import com.datarecovery.master.utils.xfile.XFilePermission;
 
 import atmob.reactivex.rxjava3.annotations.NonNull;
@@ -23,54 +26,81 @@ import atmob.rxjava.utils.RxJavaUtil;
 
 public class FilePermissionHelper {
 
-    public static void requestDataFilePermission(ComponentActivity activity, NextStepCallback stepCallback) {
-
-        Single.just(Build.VERSION.SDK_INT).flatMap((Function<Integer, SingleSource<Integer>>) sdkInt -> {
+    Disposable disposable;
+
+    public void requestDataFilePermission(ComponentActivity activity, NextStepCallback stepCallback) {
+        Single.just(AccountRepository.token)
+                .flatMap(token -> {
+                    if (TextUtils.isEmpty(token)) {
+                        return (SingleSource<Integer>) observer -> activity.runOnUiThread(() -> {
+                            PermissionDialog loginDialog = new PermissionDialog(activity);
+                            loginDialog.setDialogContent(R.string.dialog_no_login)
+                                    .setDialogTitle(R.string.dialog_no_login_title)
+                                    .setOnDialogClickListener(new PermissionDialog.OnDialogClickListener() {
+                                        @Override
+                                        public void onClickSure() {
+                                            LoginActivity.start(activity);
+                                            activity.getLifecycle().addObserver(new LifecycleEventObserver() {
+                                                @Override
+                                                public void onStateChanged(@androidx.annotation.NonNull LifecycleOwner lifecycleOwner, @androidx.annotation.NonNull Lifecycle.Event event) {
+                                                    if (event == Lifecycle.Event.ON_RESUME) {
+                                                        if (!TextUtils.isEmpty(AccountRepository.token)) {
+                                                            loginDialog.dismiss();
+                                                            activity.getLifecycle().removeObserver(this);
+                                                            observer.onSuccess(Build.VERSION.SDK_INT);
+                                                        }
+                                                    } else if (event == Lifecycle.Event.ON_DESTROY) {
+                                                        activity.getLifecycle().removeObserver(this);
+                                                    }
+                                                }
+                                            });
+                                        }
+
+                                        @Override
+                                        public void onClickCancel() {
+                                            observer.onError(new CancelException());
+                                        }
+                                    });
+                        });
+                    } else {
+                        return Single.just(Build.VERSION.SDK_INT);
+                    }
+                })
+                .flatMap((Function<Integer, SingleSource<Integer>>) sdkInt -> {
                     //判断是否有所有文件权限
                     boolean result = PermissionUtil.hasFilePermission();
                     if (!result) {
-                        return (SingleSource<Integer>) observer -> {
-                            if (activity == null || activity.isFinishing() || activity.isDestroyed()) {
-                                return;
-                            }
-                            activity.runOnUiThread(() -> {
-                                PermissionDialog requestManageDialog = new PermissionDialog(activity);
-                                requestManageDialog.setDialogTitle(R.string.request_manage_permission_title)
-                                        .setDialogContent(R.string.request_manage_permission_content)
-                                        .setTitleGravity(Gravity.START)
-                                        .setContentGravity(Gravity.START)
-                                        .setSureText(R.string.teaching_limit)
-                                        .setOnDialogClickListener(new PermissionDialog.OnDialogClickListener() {
-                                            @Override
-                                            public void onClickSure() {
-                                                PermissionUtil.requestWriteStoragePermission(activity, new PermissionUtil.PermissionCallback() {
-                                                    @Override
-                                                    public void onPermissionGranted() {
-                                                        if (activity.isFinishing() || activity.isDestroyed()) {
-                                                            return;
-                                                        }
-                                                        requestManageDialog.dismiss();
-                                                        observer.onSuccess(sdkInt);
-                                                    }
-
-                                                    @Override
-                                                    public void onPermissionDenied() {
+                        return (SingleSource<Integer>) observer -> activity.runOnUiThread(() -> {
+                            PermissionDialog requestManageDialog = new PermissionDialog(activity);
+                            requestManageDialog.setDialogTitle(R.string.request_manage_permission_title)
+                                    .setDialogContent(R.string.request_manage_permission_content)
+                                    .setTitleGravity(Gravity.START)
+                                    .setContentGravity(Gravity.START)
+                                    .setSureText(R.string.teaching_limit)
+                                    .setOnDialogClickListener(new PermissionDialog.OnDialogClickListener() {
+                                        @Override
+                                        public void onClickSure() {
+                                            PermissionUtil.requestWriteStoragePermission(activity, new PermissionUtil.PermissionCallback() {
+                                                @Override
+                                                public void onPermissionGranted() {
+                                                    requestManageDialog.dismiss();
+                                                    observer.onSuccess(sdkInt);
+                                                }
 
-                                                    }
-                                                });
-                                            }
+                                                @Override
+                                                public void onPermissionDenied() {
 
-                                            @Override
-                                            public void onClickCancel() {
-                                                if (activity.isFinishing() || activity.isDestroyed()) {
-                                                    return;
                                                 }
-                                                observer.onError(new CancelException());
-                                            }
-                                        });
-                                requestManageDialog.show();
-                            });
-                        };
+                                            });
+                                        }
+
+                                        @Override
+                                        public void onClickCancel() {
+                                            observer.onError(new CancelException());
+                                        }
+                                    });
+                            requestManageDialog.show();
+                        });
                     } else {
                         return Single.just(sdkInt);
                     }
@@ -81,47 +111,36 @@ public class FilePermissionHelper {
                     }
                     boolean dataFolder = XFilePermission.hasAndroidDataPermission(ContextUtil.getContext());
                     if (!dataFolder) {
-                        return observer -> {
-                            if (activity == null || activity.isFinishing() || activity.isDestroyed()) {
-                                return;
-                            }
-                            activity.runOnUiThread(() -> {
-                                PermissionDialog requestAndroidDataDialog = new PermissionDialog(activity);
-                                requestAndroidDataDialog.setDialogTitle(R.string.request_android_data_permission_title)
-                                        .setDialogContent(R.string.request_android_data_permission_content)
-                                        .setCancelText(R.string.wait_moment)
-                                        .setSureText(R.string.teaching_limit)
-                                        .setOnDialogClickListener(new PermissionDialog.OnDialogClickListener() {
-                                            @Override
-                                            public void onClickSure() {
-                                                XFilePermission.requestAndroidDataPermission(activity, new XFilePermission.PermissionCallback() {
-                                                    @Override
-                                                    public void onPermissionGranted() {
-                                                        if (activity.isFinishing() || activity.isDestroyed()) {
-                                                            return;
-                                                        }
-                                                        requestAndroidDataDialog.dismiss();
-                                                        observer.onSuccess(sdkInt);
-                                                    }
-
-                                                    @Override
-                                                    public void onPermissionDenied() {
+                        return observer -> activity.runOnUiThread(() -> {
+                            PermissionDialog requestAndroidDataDialog = new PermissionDialog(activity);
+                            requestAndroidDataDialog.setDialogTitle(R.string.request_android_data_permission_title)
+                                    .setDialogContent(R.string.request_android_data_permission_content)
+                                    .setCancelText(R.string.wait_moment)
+                                    .setSureText(R.string.teaching_limit)
+                                    .setOnDialogClickListener(new PermissionDialog.OnDialogClickListener() {
+                                        @Override
+                                        public void onClickSure() {
+                                            XFilePermission.requestAndroidDataPermission(activity, new XFilePermission.PermissionCallback() {
+                                                @Override
+                                                public void onPermissionGranted() {
+                                                    requestAndroidDataDialog.dismiss();
+                                                    observer.onSuccess(sdkInt);
+                                                }
 
-                                                    }
-                                                });
-                                            }
+                                                @Override
+                                                public void onPermissionDenied() {
 
-                                            @Override
-                                            public void onClickCancel() {
-                                                if (activity.isFinishing() || activity.isDestroyed()) {
-                                                    return;
                                                 }
-                                                observer.onError(new CancelException());
-                                            }
-                                        });
-                                requestAndroidDataDialog.show();
-                            });
-                        };
+                                            });
+                                        }
+
+                                        @Override
+                                        public void onClickCancel() {
+                                            observer.onError(new CancelException());
+                                        }
+                                    });
+                            requestAndroidDataDialog.show();
+                        });
                     } else {
                         return Single.just(sdkInt);
                     }
@@ -130,7 +149,7 @@ public class FilePermissionHelper {
                 .subscribe(new SingleObserver<Integer>() {
                     @Override
                     public void onSubscribe(@NonNull Disposable d) {
-
+                        disposable = d;
                     }
 
                     @Override
@@ -145,6 +164,17 @@ public class FilePermissionHelper {
                         }
                     }
                 });
+        activity.getLifecycle().addObserver(new LifecycleEventObserver() {
+            @Override
+            public void onStateChanged(@androidx.annotation.NonNull LifecycleOwner lifecycleOwner, @androidx.annotation.NonNull Lifecycle.Event event) {
+                if (event == Lifecycle.Event.ON_DESTROY) {
+                    if (disposable != null && !disposable.isDisposed()) {
+                        disposable.dispose();
+                    }
+                    activity.getLifecycle().removeObserver(this);
+                }
+            }
+        });
     }
 
     public interface NextStepCallback {

+ 8 - 0
app/src/main/java/com/datarecovery/master/utils/ImageDeepDetector.java

@@ -2,6 +2,7 @@ package com.datarecovery.master.utils;
 
 import static android.content.Context.POWER_SERVICE;
 
+import android.app.PendingIntent;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -9,12 +10,14 @@ import android.net.Uri;
 import android.os.CancellationSignal;
 import android.os.Environment;
 import android.os.PowerManager;
+import android.provider.MediaStore;
 import android.text.TextUtils;
 
 import androidx.databinding.BaseObservable;
 import androidx.databinding.Bindable;
 
 import com.atmob.common.crypto.CryptoUtils;
+import com.atmob.common.runtime.ActivityUtil;
 import com.atmob.common.runtime.ContextUtil;
 import com.datarecovery.master.BR;
 import com.datarecovery.master.utils.xfile.XFile;
@@ -35,6 +38,7 @@ import java.nio.ByteOrder;
 import java.nio.MappedByteBuffer;
 import java.nio.channels.FileChannel;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
@@ -608,6 +612,10 @@ public class ImageDeepDetector {
         }
 
         public boolean delete() throws Exception {
+//            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
+//                PendingIntent deleteRequest = MediaStore.createDeleteRequest(ContextUtil.getContext().getContentResolver(), Collections.singleton(uri));
+//               ActivityUtil.getTopActivity().startIntentSenderForResult();
+//            }
             return xFile.delete();
         }
 

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

@@ -178,4 +178,6 @@
     <string name="member_clear_buy">立即删除</string>
     <string name="img_clear_sure_title">您确定清除吗?</string>
     <string name="img_clear_sure_content">清除后,图片将彻底消失</string>
+    <string name="dialog_no_login">您需要先登录才能使用服务</string>
+    <string name="dialog_no_login_title">请登录</string>
 </resources>