From be8aba347dca88d711a6de4af045509b1f53c0ad Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 10 May 2019 11:50:05 -0300 Subject: [PATCH 1/4] [android] Add error message for unsupported handshake link version --- .../add/remote/AddContactViewModel.java | 16 ++++++-- .../contact/add/remote/NicknameFragment.java | 12 +++--- .../briar/android/viewmodel/LiveResult.java | 40 +++++++++++++++++++ briar-android/src/main/res/values/strings.xml | 1 + 4 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java index 6ed6087e3..c95f561ea 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java @@ -8,10 +8,13 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.briarproject.bramble.api.FormatException; +import org.briarproject.bramble.api.UnsupportedVersionException; import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.briar.R; +import org.briarproject.briar.android.viewmodel.LiveResult; import org.briarproject.briar.android.viewmodel.LiveEvent; import org.briarproject.briar.android.viewmodel.MutableLiveEvent; @@ -39,7 +42,7 @@ public class AddContactViewModel extends AndroidViewModel { new MutableLiveData<>(); private final MutableLiveEvent remoteLinkEntered = new MutableLiveEvent<>(); - private final MutableLiveData addContactResult = + private final MutableLiveData> addContactResult = new MutableLiveData<>(); @Nullable private String remoteHandshakeLink; @@ -97,15 +100,20 @@ public class AddContactViewModel extends AndroidViewModel { dbExecutor.execute(() -> { try { contactManager.addPendingContact(remoteHandshakeLink, nickname); - addContactResult.postValue(true); + addContactResult.postValue(new LiveResult<>(true)); + } catch (UnsupportedVersionException e) { + logException(LOG, WARNING, e); + addContactResult + .postValue(new LiveResult<>(R.string.unsupported_link)); } catch (DbException | FormatException e) { logException(LOG, WARNING, e); - addContactResult.postValue(false); + addContactResult.postValue( + new LiveResult<>(R.string.adding_contact_error)); } }); } - LiveData getAddContactResult() { + public LiveData> getAddContactResult() { return addContactResult; } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java index fc1ad3469..d01e78e31 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java @@ -103,15 +103,15 @@ public class NicknameFragment extends BaseFragment { addButton.setVisibility(INVISIBLE); progressBar.setVisibility(VISIBLE); - viewModel.getAddContactResult().observe(this, success -> { - if (success == null) return; - if (success) { + viewModel.getAddContactResult().observe(this, result -> { + if (result == null) return; + if (result.hasError()) { + Toast.makeText(getContext(), result.getErrorRes(), LENGTH_LONG) + .show(); + } else { Intent intent = new Intent(getActivity(), PendingContactListActivity.class); startActivity(intent); - } else { - Toast.makeText(getContext(), R.string.adding_contact_error, - LENGTH_LONG).show(); } finish(); }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java new file mode 100644 index 000000000..4bb19db0f --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java @@ -0,0 +1,40 @@ +package org.briarproject.briar.android.viewmodel; + +import android.support.annotation.Nullable; +import android.support.annotation.StringRes; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +@NotNullByDefault +public class LiveResult { + + @Nullable + private T result; + @StringRes + private int errorRes; + + public LiveResult(T result) { + this.result = result; + this.errorRes = 0; + } + + public LiveResult(@StringRes int errorRes) { + this.result = null; + this.errorRes = errorRes; + } + + @Nullable + public T getResultOrNull() { + return result; + } + + @StringRes + public int getErrorRes() { + return errorRes; + } + + public boolean hasError() { + return errorRes != 0; + } + +} diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 6d633633d..0fab7115c 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -200,6 +200,7 @@ Enter your contact\'s link, not your own Please enter a nickname Invalid link + This link is not supported. Please upgrade Briar and try again. You opened your own link. Use the one of the contact you want to add! Please enter a link From ec7fdb3f72bd9b7d875ad1c8e2315bceae5977f0 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 10 May 2019 12:07:04 -0300 Subject: [PATCH 2/4] [android] Pass the entire link to the backend, so newer version have a chance to arrive --- .../briar/android/contact/add/remote/LinkExchangeFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e37d987c6..27e8eda6d 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 @@ -146,7 +146,7 @@ public class LinkExchangeFragment extends BaseFragment { return null; } linkInputLayout.setError(null); - return linkWithoutSchema; + return link.toString(); } linkInputLayout.setError(getString(R.string.invalid_link)); linkInput.requestFocus(); From 19ec98b6078486ec247a13852980c40babd80211 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 13 May 2019 13:21:58 -0300 Subject: [PATCH 3/4] [android] use exception instead of string resource in LiveResult --- .../add/remote/AddContactViewModel.java | 9 +++------ .../contact/add/remote/NicknameFragment.java | 11 +++++++++-- .../briar/android/viewmodel/LiveResult.java | 19 +++++++++---------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java index c95f561ea..1d68a2cff 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java @@ -13,9 +13,8 @@ import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.briar.R; -import org.briarproject.briar.android.viewmodel.LiveResult; import org.briarproject.briar.android.viewmodel.LiveEvent; +import org.briarproject.briar.android.viewmodel.LiveResult; import org.briarproject.briar.android.viewmodel.MutableLiveEvent; import java.util.concurrent.Executor; @@ -103,12 +102,10 @@ public class AddContactViewModel extends AndroidViewModel { addContactResult.postValue(new LiveResult<>(true)); } catch (UnsupportedVersionException e) { logException(LOG, WARNING, e); - addContactResult - .postValue(new LiveResult<>(R.string.unsupported_link)); + addContactResult.postValue(new LiveResult<>(e)); } catch (DbException | FormatException e) { logException(LOG, WARNING, e); - addContactResult.postValue( - new LiveResult<>(R.string.adding_contact_error)); + addContactResult.postValue(new LiveResult<>(e)); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java index d01e78e31..0b3680c54 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java @@ -14,6 +14,7 @@ import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; +import org.briarproject.bramble.api.UnsupportedVersionException; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; @@ -106,8 +107,14 @@ public class NicknameFragment extends BaseFragment { viewModel.getAddContactResult().observe(this, result -> { if (result == null) return; if (result.hasError()) { - Toast.makeText(getContext(), result.getErrorRes(), LENGTH_LONG) - .show(); + int stringRes; + if (result + .getException() instanceof UnsupportedVersionException) { + stringRes = R.string.unsupported_link; + } else { + stringRes = R.string.adding_contact_error; + } + Toast.makeText(getContext(), stringRes, LENGTH_LONG).show(); } else { Intent intent = new Intent(getActivity(), PendingContactListActivity.class); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java index 4bb19db0f..661d2d722 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java @@ -1,7 +1,6 @@ package org.briarproject.briar.android.viewmodel; import android.support.annotation.Nullable; -import android.support.annotation.StringRes; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; @@ -10,17 +9,17 @@ public class LiveResult { @Nullable private T result; - @StringRes - private int errorRes; + @Nullable + private Exception exception; public LiveResult(T result) { this.result = result; - this.errorRes = 0; + this.exception = null; } - public LiveResult(@StringRes int errorRes) { + public LiveResult(Exception exception) { this.result = null; - this.errorRes = errorRes; + this.exception = exception; } @Nullable @@ -28,13 +27,13 @@ public class LiveResult { return result; } - @StringRes - public int getErrorRes() { - return errorRes; + @Nullable + public Exception getException() { + return exception; } public boolean hasError() { - return errorRes != 0; + return exception != null; } } From bea526d64d5b8f2b534a5f5f5b6ce815038489b9 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 24 May 2019 14:31:04 -0300 Subject: [PATCH 4/4] [android] tweak wording for unsupported link version --- briar-android/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 0fab7115c..cac5711a3 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -200,7 +200,7 @@ Enter your contact\'s link, not your own Please enter a nickname Invalid link - This link is not supported. Please upgrade Briar and try again. + This link comes from a newer version of Briar. Please upgrade to the latest version and try again. You opened your own link. Use the one of the contact you want to add! Please enter a link