Improve UI/UX around device transfer.

This commit is contained in:
Cody Henthorne
2021-03-16 10:18:02 -04:00
committed by GitHub
parent ace85df9b7
commit 490944a02a
24 changed files with 394 additions and 168 deletions

View File

@@ -73,7 +73,8 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
Group progressGroup = view.findViewById(R.id.device_transfer_setup_fragment_progress_group);
Group errorGroup = view.findViewById(R.id.device_transfer_setup_fragment_error_group);
Group verifyGroup = view.findViewById(R.id.device_transfer_setup_fragment_verify_group);
View verifyGroup = view.findViewById(R.id.device_transfer_setup_fragment_verify);
View waitingGroup = view.findViewById(R.id.device_transfer_setup_fragment_waiting);
View troubleshooting = view.findViewById(R.id.device_transfer_setup_fragment_troubleshooting);
TextView status = view.findViewById(R.id.device_transfer_setup_fragment_status);
TextView error = view.findViewById(R.id.device_transfer_setup_fragment_error);
@@ -90,6 +91,7 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment {
progressGroup.setVisibility(step.isProgress() ? View.VISIBLE : View.GONE);
errorGroup.setVisibility(step.isError() ? View.VISIBLE : View.GONE);
verifyGroup.setVisibility(step == SetupStep.VERIFY ? View.VISIBLE : View.GONE);
waitingGroup.setVisibility(step == SetupStep.WAITING_FOR_OTHER_TO_VERIFY ? View.VISIBLE : View.GONE);
troubleshooting.setVisibility(step == SetupStep.TROUBLESHOOTING ? View.VISIBLE : View.GONE);
Log.i(TAG, "Handling step: " + step.name());
@@ -166,8 +168,7 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment {
viewModel.onVerified();
});
break;
case CONNECTING:
status.setText(getStatusTextForStep(step, false));
case WAITING_FOR_OTHER_TO_VERIFY:
break;
case CONNECTED:
Log.d(TAG, "Connected! isNotShutdown: " + viewModel.isNotShutdown());

View File

@@ -59,6 +59,7 @@ public final class DeviceTransferSetupViewModel extends ViewModel {
case SERVICE_CONNECTED:
store.update(s -> s.updateStep(SetupStep.CONNECTED));
break;
case SHUTDOWN:
case FAILED:
store.update(s -> s.updateStep(SetupStep.ERROR));
break;
@@ -116,7 +117,7 @@ public final class DeviceTransferSetupViewModel extends ViewModel {
}
public void onVerified() {
store.update(s -> s.updateStep(SetupStep.CONNECTING));
store.update(s -> s.updateStep(SetupStep.WAITING_FOR_OTHER_TO_VERIFY));
}
public void onResume() {

View File

@@ -18,7 +18,7 @@ public enum SetupStep {
SETTING_UP(true, false),
WAITING(true, false),
VERIFY(false, false),
CONNECTING(true, false),
WAITING_FOR_OTHER_TO_VERIFY(false, false),
CONNECTED(true, false),
TROUBLESHOOTING(false, false),
ERROR(false, true);

View File

@@ -67,8 +67,6 @@ public final class NewDeviceTransferSetupFragment extends DeviceTransferSetupFra
: R.string.NewDeviceTransferSetup__preparing_to_connect_to_old_android_device;
case WAITING:
return R.string.NewDeviceTransferSetup__waiting_for_old_device_to_connect;
case CONNECTING:
return R.string.NewDeviceTransferSetup__connecting_to_old_android_device;
case ERROR:
return R.string.NewDeviceTransferSetup__an_unexpected_error_occurred_while_attempting_to_connect_to_your_old_device;
case TROUBLESHOOTING:

View File

@@ -29,8 +29,8 @@ public final class TransferOrRestoreFragment extends LoggingFragment {
view.findViewById(R.id.transfer_or_restore_fragment_restore)
.setOnClickListener(v -> Navigation.findNavController(v).navigate(R.id.action_choose_backup));
String description = getString(R.string.TransferOrRestoreFragment__transfer_your_account_and_message_history_from_your_old_android_device);
String toBold = getString(R.string.TransferOrRestoreFragment__you_must_have_access_to_your_old_device);
String description = getString(R.string.TransferOrRestoreFragment__transfer_your_account_and_messages_from_your_old_android_device);
String toBold = getString(R.string.TransferOrRestoreFragment__you_need_access_to_your_old_device);
TextView transferDescriptionView = view.findViewById(R.id.transfer_or_restore_fragment_transfer_description);
transferDescriptionView.setText(SpanUtil.boldSubstring(description, toBold));

View File

@@ -1,9 +1,12 @@
package org.thoughtcrime.securesms.devicetransfer.olddevice;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
public class OldDeviceExitActivity extends AppCompatActivity {
@@ -11,14 +14,23 @@ public class OldDeviceExitActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
finishAll(this);
}
public static void exit(Context context) {
Intent intent = new Intent(context, OldDeviceExitActivity.class);
public static void exit(@NonNull Activity activity) {
Intent intent = new Intent(activity, OldDeviceExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
activity.startActivity(intent);
finishAll(activity);
}
private static void finishAll(@NonNull Activity activity) {
if (Build.VERSION.SDK_INT < 21) {
activity.finishAffinity();
} else {
activity.finishAndRemoveTask();
}
}
}

View File

@@ -36,6 +36,6 @@ public final class OldDeviceTransferCompleteFragment extends LoggingFragment {
}
private void close() {
OldDeviceExitActivity.exit(requireContext());
OldDeviceExitActivity.exit(requireActivity());
}
}

View File

@@ -93,8 +93,6 @@ public final class OldDeviceTransferSetupFragment extends DeviceTransferSetupFra
case SETTING_UP:
case WAITING:
return R.string.OldDeviceTransferSetup__searching_for_your_new_android_device;
case CONNECTING:
return R.string.OldDeviceTransferSetup__connecting_to_new_android_device;
case ERROR:
return R.string.OldDeviceTransferSetup__an_unexpected_error_occurred_while_attempting_to_connect_to_your_old_device;
case TROUBLESHOOTING: