kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix backup restore moving forward when backgrounded.
rodzic
fbabab0b70
commit
6c55916cda
|
@ -1,9 +1,5 @@
|
|||
package org.thoughtcrime.securesms.registration.fragments;
|
||||
|
||||
import static org.thoughtcrime.securesms.registration.fragments.RegistrationViewDelegate.setDebugLogSubmitMultiTapView;
|
||||
import static org.thoughtcrime.securesms.util.CircularProgressButtonUtil.cancelSpinning;
|
||||
import static org.thoughtcrime.securesms.util.CircularProgressButtonUtil.setSpinning;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
|
@ -31,7 +27,7 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.Navigation;
|
||||
|
||||
import com.dd.CircularProgressButton;
|
||||
|
@ -57,13 +53,16 @@ import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel;
|
|||
import org.thoughtcrime.securesms.service.LocalBackupListener;
|
||||
import org.thoughtcrime.securesms.util.BackupUtil;
|
||||
import org.thoughtcrime.securesms.util.DateUtils;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.thoughtcrime.securesms.registration.fragments.RegistrationViewDelegate.setDebugLogSubmitMultiTapView;
|
||||
import static org.thoughtcrime.securesms.util.CircularProgressButtonUtil.cancelSpinning;
|
||||
import static org.thoughtcrime.securesms.util.CircularProgressButtonUtil.setSpinning;
|
||||
|
||||
public final class RestoreBackupFragment extends LoggingFragment {
|
||||
|
||||
private static final String TAG = Log.tag(RestoreBackupFragment.class);
|
||||
|
@ -74,6 +73,7 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
private TextView restoreBackupProgress;
|
||||
private CircularProgressButton restoreButton;
|
||||
private View skipRestoreButton;
|
||||
private RegistrationViewModel viewModel;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
|
@ -101,7 +101,8 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
.navigate(RestoreBackupFragmentDirections.actionSkip());
|
||||
});
|
||||
|
||||
RegistrationViewModel viewModel = ViewModelProviders.of(requireActivity()).get(RegistrationViewModel.class);
|
||||
viewModel = new ViewModelProvider(requireActivity()).get(RegistrationViewModel.class);
|
||||
|
||||
if (viewModel.isReregister()) {
|
||||
Log.i(TAG, "Skipping backup restore during re-register.");
|
||||
Navigation.findNavController(view)
|
||||
|
@ -109,6 +110,11 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
return;
|
||||
}
|
||||
|
||||
if (viewModel.hasBackupCompleted()) {
|
||||
onBackupComplete();
|
||||
return;
|
||||
}
|
||||
|
||||
if (SignalStore.settings().isBackupEnabled()) {
|
||||
Log.i(TAG, "Backups enabled, so a backup must have been previously restored.");
|
||||
Navigation.findNavController(view)
|
||||
|
@ -279,6 +285,7 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
|
||||
@Override
|
||||
protected void onPostExecute(@NonNull BackupImportResult result) {
|
||||
viewModel.markBackupCompleted();
|
||||
cancelSpinning(restoreButton);
|
||||
skipRestoreButton.setVisibility(View.VISIBLE);
|
||||
|
||||
|
@ -305,6 +312,14 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (viewModel != null && viewModel.hasBackupCompleted()) {
|
||||
onBackupComplete();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
|
@ -325,12 +340,16 @@ public final class RestoreBackupFragment extends LoggingFragment {
|
|||
skipRestoreButton.setVisibility(View.INVISIBLE);
|
||||
|
||||
if (event.getType() == FullBackupBase.BackupEvent.Type.FINISHED) {
|
||||
if (BackupUtil.isUserSelectionRequired(requireContext()) && !BackupUtil.canUserAccessBackupDirectory(requireContext())) {
|
||||
displayConfirmationDialog(requireContext());
|
||||
} else {
|
||||
Navigation.findNavController(requireView())
|
||||
.navigate(RestoreBackupFragmentDirections.actionBackupRestored());
|
||||
}
|
||||
onBackupComplete();
|
||||
}
|
||||
}
|
||||
|
||||
private void onBackupComplete() {
|
||||
if (BackupUtil.isUserSelectionRequired(requireContext()) && !BackupUtil.canUserAccessBackupDirectory(requireContext())) {
|
||||
displayConfirmationDialog(requireContext());
|
||||
} else {
|
||||
Navigation.findNavController(requireView())
|
||||
.navigate(RestoreBackupFragmentDirections.actionBackupRestored());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ public final class RegistrationViewModel extends BaseRegistrationViewModel {
|
|||
private static final String STATE_FCM_TOKEN = "FCM_TOKEN";
|
||||
private static final String STATE_RESTORE_FLOW_SHOWN = "RESTORE_FLOW_SHOWN";
|
||||
private static final String STATE_IS_REREGISTER = "IS_REREGISTER";
|
||||
private static final String STATE_BACKUP_COMPLETED = "BACKUP_COMPLETED";
|
||||
|
||||
private final RegistrationRepository registrationRepository;
|
||||
|
||||
|
@ -43,6 +44,7 @@ public final class RegistrationViewModel extends BaseRegistrationViewModel {
|
|||
this.registrationRepository = registrationRepository;
|
||||
|
||||
setInitialDefaultValue(STATE_RESTORE_FLOW_SHOWN, false);
|
||||
setInitialDefaultValue(STATE_BACKUP_COMPLETED, false);
|
||||
|
||||
this.savedState.set(STATE_IS_REREGISTER, isReregister);
|
||||
}
|
||||
|
@ -81,6 +83,15 @@ public final class RegistrationViewModel extends BaseRegistrationViewModel {
|
|||
savedState.set(STATE_IS_REREGISTER, isReregister);
|
||||
}
|
||||
|
||||
public void markBackupCompleted() {
|
||||
savedState.set(STATE_BACKUP_COMPLETED, true);
|
||||
}
|
||||
|
||||
public boolean hasBackupCompleted() {
|
||||
Boolean completed = savedState.get(STATE_BACKUP_COMPLETED);
|
||||
return completed != null ? completed : false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<RequestVerificationCodeResponseProcessor> requestVerificationCode(@NonNull VerifyAccountRepository.Mode mode) {
|
||||
return super.requestVerificationCode(mode)
|
||||
|
|
Ładowanie…
Reference in New Issue