From 7302bf9d7aabd75975aa074922fc2be7c8c67683 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 24 Oct 2022 12:51:39 +0100 Subject: [PATCH 1/3] Add a hint that both parties need to scan each other's QR codes. --- .../add/nearby/AddNearbyContactFragment.java | 6 ++++ .../briar/android/view/InfoView.java | 33 +++++++++++++++++++ .../res/layout/fragment_keyagreement_qr.xml | 33 +++++++++++++++---- .../src/main/res/layout/info_view.xml | 20 +++++++++++ briar-android/src/main/res/values/strings.xml | 2 ++ 5 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java create mode 100644 briar-android/src/main/res/layout/info_view.xml diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java index 81b386d01..c6fb17258 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java @@ -20,6 +20,7 @@ import org.briarproject.briar.android.contact.add.nearby.AddContactState.QrCodeS import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.qrcode.CameraException; import org.briarproject.briar.android.qrcode.CameraView; +import org.briarproject.briar.android.view.InfoView; import org.briarproject.briar.android.view.QrCodeView; import org.briarproject.nullsafety.MethodsNotNullByDefault; import org.briarproject.nullsafety.ParametersNotNullByDefault; @@ -57,6 +58,7 @@ public class AddNearbyContactFragment extends BaseFragment private CameraView cameraView; private LinearLayout cameraOverlay; private View statusView; + private InfoView infoView; private QrCodeView qrCodeView; private TextView status; @@ -91,6 +93,9 @@ public class AddNearbyContactFragment extends BaseFragment cameraOverlay = view.findViewById(R.id.camera_overlay); statusView = view.findViewById(R.id.status_container); status = view.findViewById(R.id.connect_status); + infoView = view.findViewById(R.id.info_view); + TextView info = view.findViewById(R.id.info_text); + info.setText(R.string.info_both_must_scan); qrCodeView = view.findViewById(R.id.qr_code_view); qrCodeView.setFullscreenListener(this); @@ -160,6 +165,7 @@ public class AddNearbyContactFragment extends BaseFragment } else if (state instanceof KeyAgreementWaiting) { status.setText(R.string.waiting_for_contact_to_scan); } else if (state instanceof KeyAgreementStarted) { + infoView.setVisibility(INVISIBLE); qrCodeView.setVisibility(INVISIBLE); status.setText(R.string.authenticating_with_device); } else if (state instanceof ContactExchangeStarted) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java new file mode 100644 index 000000000..e50ec759f --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java @@ -0,0 +1,33 @@ +package org.briarproject.briar.android.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; + +import org.briarproject.briar.R; +import org.briarproject.nullsafety.InterfaceNotNullByDefault; + +import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; + +import static android.content.Context.LAYOUT_INFLATER_SERVICE; + +@InterfaceNotNullByDefault +public class InfoView extends CardView { + + public InfoView(Context context) { + this(context, null); + } + + public InfoView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public InfoView(Context context, @Nullable AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + LayoutInflater inflater = (LayoutInflater) + context.getSystemService(LAYOUT_INFLATER_SERVICE); + inflater.inflate(R.layout.info_view, this, true); + } +} diff --git a/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml b/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml index 33728c9f5..7ba8b54ec 100644 --- a/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml +++ b/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml @@ -1,5 +1,6 @@ - + android:layout_height="wrap_content" + app:layout_constraintBottom_toTopOf="@+id/connect_status" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_chainStyle="packed" /> - + + + + + + + + + \ No newline at end of file diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 93f373087..83a90004c 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -167,6 +167,7 @@ Unavailable on your system Status: Error + Information No contacts to show @@ -257,6 +258,7 @@ Authenticating with device\u2026 Could not connect to your contact If this problem persists, please send feedback to help us improve the app. + You must both scan each other\'s QR codes From ba83290fcd3714adc7628fe9d79cab4643cd4a76 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 24 Oct 2022 13:29:59 +0100 Subject: [PATCH 2/3] Add a hint that both parties need to add each other's links. --- .../contact/add/remote/LinkExchangeFragment.java | 3 +++ .../main/res/layout/fragment_link_exchange.xml | 15 +++++++++++---- briar-android/src/main/res/values/strings.xml | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java index 42097e32a..9acde98b6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java @@ -122,6 +122,9 @@ public class LinkExchangeFragment extends BaseFragment { .startChooser()); shareButton.setEnabled(true); + TextView infoText = v.findViewById(R.id.info_text); + infoText.setText(R.string.info_both_must_enter_links); + Button continueButton = v.findViewById(R.id.addButton); continueButton.setOnClickListener(view -> onContinueButtonClicked()); continueButton.setEnabled(true); diff --git a/briar-android/src/main/res/layout/fragment_link_exchange.xml b/briar-android/src/main/res/layout/fragment_link_exchange.xml index 4ebd1a64c..9b8bab8e6 100644 --- a/briar-android/src/main/res/layout/fragment_link_exchange.xml +++ b/briar-android/src/main/res/layout/fragment_link_exchange.xml @@ -30,8 +30,7 @@ app:layout_constraintBottom_toTopOf="@+id/stepOneText" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.0" /> + app:layout_constraintTop_toTopOf="parent" /> @@ -226,8 +223,18 @@ app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linkInputLayout" + app:layout_constraintBottom_toTopOf="@+id/infoView" app:layout_constraintVertical_bias="0.0" /> + + diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 83a90004c..dcb578ad2 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -318,6 +318,7 @@ Different Person %1$s and %2$s sent you the same link.\n\nOne of them may be trying to discover who your contacts are.\n\nDon\'t tell them you received the same link from someone else. Pending contact updated + You must both add each other\'s links From 9f039ff0b8f2fac6aed87c67e4ffa8e548b547c1 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 31 Oct 2022 14:46:22 +0000 Subject: [PATCH 3/3] Address review feedback. --- .../contact/add/nearby/AddNearbyContactFragment.java | 3 +-- .../android/contact/add/remote/LinkExchangeFragment.java | 3 ++- .../java/org/briarproject/briar/android/view/InfoView.java | 7 +++++++ briar-android/src/main/res/layout/info_view.xml | 2 ++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java index c6fb17258..76f87e409 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java @@ -94,8 +94,7 @@ public class AddNearbyContactFragment extends BaseFragment statusView = view.findViewById(R.id.status_container); status = view.findViewById(R.id.connect_status); infoView = view.findViewById(R.id.info_view); - TextView info = view.findViewById(R.id.info_text); - info.setText(R.string.info_both_must_scan); + infoView.setText(R.string.info_both_must_scan); qrCodeView = view.findViewById(R.id.qr_code_view); qrCodeView.setFullscreenListener(this); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java index 9acde98b6..6e797e23e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java @@ -16,6 +16,7 @@ import com.google.android.material.textfield.TextInputLayout; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.fragment.BaseFragment; +import org.briarproject.briar.android.view.InfoView; import org.briarproject.nullsafety.MethodsNotNullByDefault; import org.briarproject.nullsafety.ParametersNotNullByDefault; @@ -122,7 +123,7 @@ public class LinkExchangeFragment extends BaseFragment { .startChooser()); shareButton.setEnabled(true); - TextView infoText = v.findViewById(R.id.info_text); + InfoView infoText = v.findViewById(R.id.infoView); infoText.setText(R.string.info_both_must_enter_links); Button continueButton = v.findViewById(R.id.addButton); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java index e50ec759f..cc33df6a2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/InfoView.java @@ -3,11 +3,13 @@ package org.briarproject.briar.android.view; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; +import android.widget.TextView; import org.briarproject.briar.R; import org.briarproject.nullsafety.InterfaceNotNullByDefault; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import androidx.cardview.widget.CardView; import static android.content.Context.LAYOUT_INFLATER_SERVICE; @@ -30,4 +32,9 @@ public class InfoView extends CardView { context.getSystemService(LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.info_view, this, true); } + + public void setText(@StringRes int resId) { + TextView infoText = findViewById(R.id.info_text); + infoText.setText(resId); + } } diff --git a/briar-android/src/main/res/layout/info_view.xml b/briar-android/src/main/res/layout/info_view.xml index 32c0c8770..c7cf40f7b 100644 --- a/briar-android/src/main/res/layout/info_view.xml +++ b/briar-android/src/main/res/layout/info_view.xml @@ -13,6 +13,8 @@ android:layout_margin="@dimen/margin_medium" android:contentDescription="@string/info" android:drawablePadding="@dimen/margin_medium" + android:drawableTint="?attr/colorControlNormal" + android:gravity="center_vertical" app:drawableLeftCompat="@drawable/ic_info_dark" app:drawableStartCompat="@drawable/ic_info_dark" tools:text="Did you know that if you took all the veins out of your body and laid them out end to end, you would die?" />