From 656ca8d67a48cd3606433f4ff8ef6483ca96c490 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 14 Aug 2018 19:19:56 -0300 Subject: [PATCH] Contact failure: Add better icon and remove technical error message --- .../keyagreement/KeyAgreementTaskImpl.java | 1 + briar-android/artwork/qr_code_error.svg | 52 +++++++++++++++++++ .../keyagreement/ContactExchangeActivity.java | 4 +- .../ContactExchangeErrorFragment.java | 32 +++++------- .../keyagreement/KeyAgreementActivity.java | 3 +- .../src/main/res/drawable/qr_code_error.xml | 23 ++++++++ .../fragment_error_contact_exchange.xml | 30 ++++++----- briar-android/src/main/res/values/strings.xml | 9 ++-- 8 files changed, 112 insertions(+), 42 deletions(-) create mode 100644 briar-android/artwork/qr_code_error.svg create mode 100644 briar-android/src/main/res/drawable/qr_code_error.xml diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java index 5473114ee..b6e994231 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java @@ -102,6 +102,7 @@ class KeyAgreementTaskImpl extends Thread implements KeyAgreementTask, KeyAgreementTransport transport = connector.connect(remotePayload, alice); if (transport == null) { + LOG.warning("Key agreement failed. Transport was null."); // Notify caller that the connection failed eventBus.broadcast(new KeyAgreementFailedEvent()); return; diff --git a/briar-android/artwork/qr_code_error.svg b/briar-android/artwork/qr_code_error.svg new file mode 100644 index 000000000..cfd12461e --- /dev/null +++ b/briar-android/artwork/qr_code_error.svg @@ -0,0 +1,52 @@ + +image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeActivity.java index c80e96f6a..9661eb770 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeActivity.java @@ -97,14 +97,14 @@ public class ContactExchangeActivity extends KeyAgreementActivity implements @Override public void contactExchangeFailed() { runOnUiThreadUnlessDestroyed(() -> { - showErrorFragment(R.string.contact_exchange_failed); + showErrorFragment(R.string.connection_error_explanation); }); } @UiThread @Override public void keyAgreementFailed() { - showErrorFragment(R.string.connection_failed); + showErrorFragment(R.string.connection_error_explanation); } @UiThread diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java index de196da58..a75ea9339 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java @@ -2,6 +2,7 @@ package org.briarproject.briar.android.keyagreement; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -28,10 +29,10 @@ public class ContactExchangeErrorFragment extends BaseFragment { ContactExchangeErrorFragment.class.getName(); private static final String ERROR_MSG = "errorMessage"; - public static ContactExchangeErrorFragment newInstance(String message) { + public static ContactExchangeErrorFragment newInstance(@StringRes int res) { ContactExchangeErrorFragment f = new ContactExchangeErrorFragment(); Bundle args = new Bundle(); - args.putString(ERROR_MSG, message); + args.putInt(ERROR_MSG, res); f.setArguments(args); return f; } @@ -39,24 +40,11 @@ public class ContactExchangeErrorFragment extends BaseFragment { @Inject AndroidExecutor androidExecutor; - private String errorMessage; - @Override public String getUniqueTag() { return TAG; } - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Bundle args = getArguments(); - if (args == null) { - throw new IllegalArgumentException("Use newInstance()"); - } - errorMessage = args.getString(ERROR_MSG); - } - @Nullable @Override public View onCreateView(LayoutInflater inflater, @@ -66,13 +54,17 @@ public class ContactExchangeErrorFragment extends BaseFragment { .inflate(R.layout.fragment_error_contact_exchange, container, false); - // make feedback link clickable + // set humanized error message TextView explanation = v.findViewById(R.id.errorMessage); - onSingleLinkClick(explanation, this::triggerFeedback); + Bundle args = getArguments(); + if (args == null) { + throw new IllegalArgumentException("Use newInstance()"); + } + explanation.setText(args.getInt(ERROR_MSG)); - // technical error message - TextView msg = v.findViewById(R.id.errorMessageTech); - msg.setText(errorMessage); + // make feedback link clickable + TextView sendFeedback = v.findViewById(R.id.sendFeedback); + onSingleLinkClick(sendFeedback, this::triggerFeedback); // buttons Button tryAgain = v.findViewById(R.id.tryAgainButton); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java index 8caedc130..0090680fe 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java @@ -188,8 +188,7 @@ public abstract class KeyAgreementActivity extends BriarActivity implements } protected void showErrorFragment(@StringRes int errorResId) { - String errorMessage = getString(errorResId); - BaseFragment f = ContactExchangeErrorFragment.newInstance(errorMessage); + BaseFragment f = ContactExchangeErrorFragment.newInstance(errorResId); showNextFragment(f); } diff --git a/briar-android/src/main/res/drawable/qr_code_error.xml b/briar-android/src/main/res/drawable/qr_code_error.xml new file mode 100644 index 000000000..f866e6389 --- /dev/null +++ b/briar-android/src/main/res/drawable/qr_code_error.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/briar-android/src/main/res/layout/fragment_error_contact_exchange.xml b/briar-android/src/main/res/layout/fragment_error_contact_exchange.xml index 55ee4074e..48a563ca1 100644 --- a/briar-android/src/main/res/layout/fragment_error_contact_exchange.xml +++ b/briar-android/src/main/res/layout/fragment_error_contact_exchange.xml @@ -29,7 +29,9 @@ android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" - android:src="@drawable/qr_code_intro" + android:layout_marginTop="16dp" + android:scaleType="fitCenter" + android:src="@drawable/qr_code_error" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/errorTitle" @@ -45,30 +47,32 @@ android:layout_marginRight="16dp" android:layout_marginStart="16dp" android:layout_marginTop="8dp" - android:text="@string/connection_error_explanation" android:textColor="?android:attr/textColorPrimary" android:textSize="@dimen/text_size_medium" + app:layout_constraintBottom_toTopOf="@+id/sendFeedback" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/errorIcon"/> + app:layout_constraintTop_toBottomOf="@+id/errorIcon" + app:layout_constraintVertical_bias="0" + app:layout_constraintVertical_chainStyle="packed" + tools:text="@string/connection_error_explanation"/> + app:layout_constraintTop_toBottomOf="@+id/errorMessage"/>