Popup dialog on shards sent for custodian

This commit is contained in:
ameba23
2022-02-09 11:40:18 +01:00
parent 3e7f3fcf5d
commit 456fd7d2e4
4 changed files with 30 additions and 24 deletions

View File

@@ -13,7 +13,6 @@ import org.briarproject.briar.android.fragment.BaseFragment;
import org.briarproject.briar.api.socialbackup.recovery.CustodianTask; import org.briarproject.briar.api.socialbackup.recovery.CustodianTask;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Logger;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
@@ -21,17 +20,12 @@ import javax.inject.Inject;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.briar.android.conversation.ConversationActivity.CONTACT_ID; import static org.briarproject.briar.android.conversation.ConversationActivity.CONTACT_ID;
public class CustodianReturnShardActivity extends BriarActivity public class CustodianReturnShardActivity extends BriarActivity
implements BaseFragment.BaseFragmentListener { implements BaseFragment.BaseFragmentListener {
private CustodianReturnShardViewModel viewModel; private CustodianReturnShardViewModel viewModel;
private static final Logger LOG =
getLogger(CustodianReturnShardActivity.class.getName());
private ContactId contactId;
@Inject @Inject
ViewModelProvider.Factory viewModelFactory; ViewModelProvider.Factory viewModelFactory;
@@ -52,7 +46,7 @@ public class CustodianReturnShardActivity extends BriarActivity
Intent intent = getIntent(); Intent intent = getIntent();
int id = intent.getIntExtra(CONTACT_ID, -1); int id = intent.getIntExtra(CONTACT_ID, -1);
if (id == -1) throw new IllegalStateException("No ContactId"); if (id == -1) throw new IllegalStateException("No ContactId");
contactId = new ContactId(id); ContactId contactId = new ContactId(id);
try { try {
viewModel.start(contactId); viewModel.start(contactId);
@@ -96,7 +90,8 @@ public class CustodianReturnShardActivity extends BriarActivity
"It looks like you are not connected to a Wifi network", "It looks like you are not connected to a Wifi network",
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();
FragmentManager fm = getSupportFragmentManager(); FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag(CustodianReturnShardFragment.TAG) == null) { if (fm.findFragmentByTag(CustodianReturnShardFragment.TAG) ==
null) {
BaseFragment f = new CustodianReturnShardErrorFragment(); BaseFragment f = new CustodianReturnShardErrorFragment();
fm.beginTransaction() fm.beginTransaction()
.replace(R.id.fragmentContainer, f, f.getUniqueTag()) .replace(R.id.fragmentContainer, f, f.getUniqueTag())
@@ -106,19 +101,15 @@ public class CustodianReturnShardActivity extends BriarActivity
} }
} }
private void onReturnShardStateChanged(CustodianTask.State state) { private void onReturnShardStateChanged(CustodianTask.State state) {
if (state instanceof CustodianTask.State.Success) { if (state instanceof CustodianTask.State.Failure) {
CustodianReturnShardSuccessFragment fragment = new CustodianReturnShardSuccessFragment(); // TODO error fragment here
showNextFragment(fragment); // TODO handle reason
} else if (state instanceof CustodianTask.State.Failure) { Toast.makeText(this,
// TODO error fragment here "Backup piece transfer failed",
// TODO handle reason Toast.LENGTH_SHORT).show();
Toast.makeText(this, finish();
"Backup piece transfer failed", }
Toast.LENGTH_SHORT).show();
finish();
}
} }
private void showCameraFragment() { private void showCameraFragment() {

View File

@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@@ -24,6 +25,7 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import androidx.annotation.UiThread; import androidx.annotation.UiThread;
import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
@@ -53,6 +55,7 @@ public class CustodianReturnShardFragment extends BaseFragment
private LinearLayout cameraOverlay; private LinearLayout cameraOverlay;
private View statusView; private View statusView;
private TextView status; private TextView status;
private ProgressBar bottomSpinner;
public static CustodianReturnShardFragment newInstance() { public static CustodianReturnShardFragment newInstance() {
Bundle args = new Bundle(); Bundle args = new Bundle();
@@ -84,6 +87,7 @@ public class CustodianReturnShardFragment extends BaseFragment
cameraOverlay = view.findViewById(R.id.camera_overlay); cameraOverlay = view.findViewById(R.id.camera_overlay);
statusView = view.findViewById(R.id.status_container); statusView = view.findViewById(R.id.status_container);
status = view.findViewById(R.id.connect_status); status = view.findViewById(R.id.connect_status);
bottomSpinner = view.findViewById(R.id.qr_code_progress_bar);
viewModel.getState().observe(getViewLifecycleOwner(), viewModel.getState().observe(getViewLifecycleOwner(),
this::onReturnShardStateChanged); this::onReturnShardStateChanged);
@@ -141,7 +145,6 @@ public class CustodianReturnShardFragment extends BaseFragment
@UiThread @UiThread
private void onReturnShardStateChanged(@Nullable CustodianTask.State state) { private void onReturnShardStateChanged(@Nullable CustodianTask.State state) {
LOG.info("State changed");
// if (state instanceof CustodianTask.State.Connecting) { // if (state instanceof CustodianTask.State.Connecting) {
// try { // try {
// cameraView.stop(); // cameraView.stop();
@@ -163,8 +166,9 @@ public class CustodianReturnShardFragment extends BaseFragment
} else if (state instanceof CustodianTask.State.ReceivingAck) { } else if (state instanceof CustodianTask.State.ReceivingAck) {
status.setText("Receiving Ack"); status.setText("Receiving Ack");
} else if (state instanceof CustodianTask.State.Success) { } else if (state instanceof CustodianTask.State.Success) {
// TODO statusView.setVisibility(INVISIBLE);
status.setText(R.string.exchanging_contact_details); bottomSpinner.setVisibility(INVISIBLE);
showSuccessDialog();
} else if (state instanceof CustodianTask.State.Failure) { } else if (state instanceof CustodianTask.State.Failure) {
// the activity will replace this fragment with an error fragment // the activity will replace this fragment with an error fragment
statusView.setVisibility(INVISIBLE); statusView.setVisibility(INVISIBLE);
@@ -190,4 +194,15 @@ public class CustodianReturnShardFragment extends BaseFragment
requireActivity().getSupportFragmentManager().popBackStack(); requireActivity().getSupportFragmentManager().popBackStack();
} }
private void showSuccessDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(),
R.style.BriarDialogTheme);
builder.setTitle(R.string.custodian_shard_sent);
//builder.setMessage();
builder.setPositiveButton(R.string.ok,
(dialog, which) -> viewModel.onSuccessDismissed());
builder.setIcon(R.drawable.ic_baseline_done_outline_24);
AlertDialog dialog = builder.create();
dialog.show();
}
} }

View File

@@ -177,7 +177,6 @@ public class CustodianReturnShardViewModel extends AndroidViewModel
successDismissed.setEvent(true); successDismissed.setEvent(true);
} }
QrCodeDecoder getQrCodeDecoder() { QrCodeDecoder getQrCodeDecoder() {
return qrCodeDecoder; return qrCodeDecoder;
} }

View File

@@ -6,6 +6,7 @@
<ProgressBar <ProgressBar
style="?android:attr/progressBarStyleLarge" style="?android:attr/progressBarStyleLarge"
android:id="@+id/qr_code_progress_bar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" /> android:layout_gravity="center" />