From 19bc73ac6146309fc13bdec09247d73f0d5c0882 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 3 May 2019 11:07:23 -0300 Subject: [PATCH] [android] show Toast when user shares own handshake link This also limits the AddContactActivity to run within one single task --- briar-android/src/main/AndroidManifest.xml | 11 ++-- .../add/remote/AddContactActivity.java | 54 ++++++++++--------- briar-android/src/main/res/values/strings.xml | 1 + 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 89a04bc5c..51c5c7954 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -427,13 +427,16 @@ - - - + + + + + diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java index 1a6d55f75..6b6068b7f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java @@ -30,6 +30,7 @@ public class AddContactActivity extends BriarActivity implements @Inject ViewModelProvider.Factory viewModelFactory; + private AddContactViewModel viewModel; @Override public void injectActivity(ActivityComponent component) { @@ -46,9 +47,8 @@ public class AddContactActivity extends BriarActivity implements ab.setDisplayHomeAsUpEnabled(true); } - AddContactViewModel viewModel = - ViewModelProviders.of(this, viewModelFactory) - .get(AddContactViewModel.class); + viewModel = ViewModelProviders.of(this, viewModelFactory) + .get(AddContactViewModel.class); viewModel.getRemoteLinkEntered().observe(this, entered -> { if (entered != null && entered) { NicknameFragment f = new NicknameFragment(); @@ -58,33 +58,39 @@ public class AddContactActivity extends BriarActivity implements Intent i = getIntent(); if (i != null) { - String action = i.getAction(); - if (ACTION_SEND.equals(action) || ACTION_VIEW.equals(action)) { - String text = i.getStringExtra(EXTRA_TEXT); - if (text != null) { - if (viewModel.isValidRemoteContactLink(text)) { - viewModel.setRemoteHandshakeLink(text); - } else { - Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) - .show(); - } - } - String uri = i.getDataString(); - if (uri != null) { - if (viewModel.isValidRemoteContactLink(uri)) { - viewModel.setRemoteHandshakeLink(uri); - } else { - Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) - .show(); - } - } - } + onNewIntent(i); + setIntent(null); // don't keep the intent for configuration changes } + if (state == null) { showInitialFragment(new LinkExchangeFragment()); } } + @Override + protected void onNewIntent(Intent i) { + super.onNewIntent(i); + String action = i.getAction(); + if (ACTION_SEND.equals(action) || ACTION_VIEW.equals(action)) { + String text = i.getStringExtra(EXTRA_TEXT); + String uri = i.getDataString(); + if (text != null) handleIncomingLink(text); + else if (uri != null) handleIncomingLink(uri); + } + } + + private void handleIncomingLink(String link) { + if (link.equals(viewModel.getHandshakeLink().getValue())) { + Toast.makeText(this, R.string.intent_own_link, LENGTH_LONG) + .show(); + } else if (viewModel.isValidRemoteContactLink(link)) { + viewModel.setRemoteHandshakeLink(link); + } else { + Toast.makeText(this, R.string.invalid_link, LENGTH_LONG) + .show(); + } + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 83ffb5e82..6d633633d 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 + You opened your own link. Use the one of the contact you want to add! Please enter a link 1