diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
index 87c6b89b0..fad20a7ff 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
@@ -62,11 +62,6 @@ public interface ContactManager {
*/
String getRemoteContactLink() throws DbException;
- /**
- * Returns true if the given link is syntactically valid.
- */
- boolean isValidRemoteContactLink(String link);
-
/**
* Requests a new contact to be added via the given {@code link}.
*
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
index deda660f2..db4f5d029 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
@@ -138,11 +138,6 @@ class ContactManagerImpl implements ContactManager {
return new String(c);
}
- @Override
- public boolean isValidRemoteContactLink(String link) {
- return LINK_REGEX.matcher(link).matches();
- }
-
@Override
public void addRemoteContactRequest(String link, String alias) {
// TODO replace with real implementation
@@ -199,7 +194,7 @@ class ContactManagerImpl implements ContactManager {
pendingContacts.remove(pendingContact);
Event e;
try {
- if (true || new Random().nextBoolean()) {
+ if (new Random().nextBoolean()) {
getLogger("TMP").warning("FAILED");
e = new PendingContactStateChangedEvent(id, FAILED);
PendingContact updated = new PendingContact(id,
diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index 7595a77d8..89a04bc5c 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -444,7 +444,7 @@
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
index 073963017..e2912f920 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
@@ -572,11 +572,11 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
private void updateContactAddedNotification() {
BriarNotificationBuilder b =
new BriarNotificationBuilder(appContext, CONTACT_CHANNEL_ID);
- b.setSmallIcon(R.drawable.notification_introduction);
+ b.setSmallIcon(R.drawable.notification_contact_added);
b.setColorRes(R.color.briar_primary);
b.setContentTitle(appContext.getText(R.string.app_name));
b.setContentText(appContext.getResources().getQuantityString(
- R.plurals.introduction_notification_text, contactAddedTotal,
+ R.plurals.contact_added_notification_text, contactAddedTotal,
contactAddedTotal));
b.setNotificationCategory(CATEGORY_MESSAGE);
setAlertProperties(b);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java
index 169113c92..1c0e681ef 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java
@@ -20,7 +20,7 @@ import org.briarproject.briar.android.contact.add.remote.LinkExchangeFragment;
import org.briarproject.briar.android.contact.ContactListFragment;
import org.briarproject.briar.android.contact.ContactModule;
import org.briarproject.briar.android.contact.add.remote.NicknameFragment;
-import org.briarproject.briar.android.contact.add.remote.PendingRequestsActivity;
+import org.briarproject.briar.android.contact.add.remote.PendingContactListActivity;
import org.briarproject.briar.android.conversation.AliasDialogFragment;
import org.briarproject.briar.android.conversation.ConversationActivity;
import org.briarproject.briar.android.conversation.ImageActivity;
@@ -174,7 +174,7 @@ public interface ActivityComponent {
void inject(AddContactActivity activity);
- void inject(PendingRequestsActivity activity);
+ void inject(PendingContactListActivity activity);
// Fragments
void inject(AuthorNameFragment fragment);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
index d0abe8ebc..df3efdea4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
@@ -35,7 +35,7 @@ import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.contact.BaseContactListAdapter.OnContactClickListener;
import org.briarproject.briar.android.contact.add.remote.AddContactActivity;
-import org.briarproject.briar.android.contact.add.remote.PendingRequestsActivity;
+import org.briarproject.briar.android.contact.add.remote.PendingContactListActivity;
import org.briarproject.briar.android.conversation.ConversationActivity;
import org.briarproject.briar.android.fragment.BaseFragment;
import org.briarproject.briar.android.keyagreement.ContactExchangeActivity;
@@ -179,7 +179,7 @@ public class ContactListFragment extends BaseFragment implements EventListener,
snackbar = new BriarSnackbarBuilder()
.setAction(R.string.show, v ->
startActivity(new Intent(getContext(),
- PendingRequestsActivity.class)))
+ PendingContactListActivity.class)))
.make(contentView, R.string.pending_contact_requests_snackbar,
LENGTH_INDEFINITE);
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 4d80f3215..45d1ae2d9 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,12 +13,21 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import java.util.concurrent.Executor;
+import java.util.logging.Logger;
import javax.inject.Inject;
+import static java.util.logging.Level.WARNING;
+import static java.util.logging.Logger.getLogger;
+import static org.briarproject.bramble.api.contact.ContactManager.LINK_REGEX;
+import static org.briarproject.bramble.util.LogUtils.logException;
+
@NotNullByDefault
public class AddContactViewModel extends AndroidViewModel {
+ private final static Logger LOG =
+ getLogger(AddContactViewModel.class.getName());
+
private final ContactManager contactManager;
@DatabaseExecutor
private final Executor dbExecutor;
@@ -44,7 +53,9 @@ public class AddContactViewModel extends AndroidViewModel {
try {
ourLink.postValue(contactManager.getRemoteContactLink());
} catch (DbException e) {
- throw new AssertionError(e);
+ logException(LOG, WARNING, e);
+ // the UI should stay disable in this case,
+ // leaving the user unable to proceed
}
});
}
@@ -57,14 +68,8 @@ public class AddContactViewModel extends AndroidViewModel {
remoteContactLink = link;
}
- @Nullable
- String getRemoteContactLink() {
- return remoteContactLink;
- }
-
boolean isValidRemoteContactLink(@Nullable CharSequence link) {
- return link != null &&
- contactManager.isValidRemoteContactLink(link.toString());
+ return link != null && LINK_REGEX.matcher(link).find();
}
LiveData getRemoteLinkEntered() {
@@ -74,6 +79,7 @@ public class AddContactViewModel extends AndroidViewModel {
void onRemoteLinkEntered() {
if (remoteContactLink == null) throw new IllegalStateException();
remoteLinkEntered.setValue(true);
+ remoteLinkEntered.postValue(false); // reset, so we can navigate back
}
void addContact(String nickname) {
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 8f5333722..82e971d4d 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
@@ -8,7 +8,6 @@ import android.os.Bundle;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.ShareCompat.IntentBuilder;
-import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -73,9 +72,6 @@ public class LinkExchangeFragment extends BaseFragment {
linkInputLayout = v.findViewById(R.id.linkInputLayout);
linkInput = v.findViewById(R.id.linkInput);
- if (viewModel.getRemoteContactLink() != null) {
- linkInput.setText(viewModel.getRemoteContactLink());
- }
clipboard = (ClipboardManager) requireNonNull(
getContext().getSystemService(CLIPBOARD_SERVICE));
@@ -83,7 +79,7 @@ public class LinkExchangeFragment extends BaseFragment {
Button pasteButton = v.findViewById(R.id.pasteButton);
pasteButton.setOnClickListener(view -> {
ClipData clipData = clipboard.getPrimaryClip();
- if (clipData != null)
+ if (clipData != null && clipData.getItemCount() > 0)
linkInput.setText(clipData.getItemAt(0).getText());
});
@@ -95,7 +91,7 @@ public class LinkExchangeFragment extends BaseFragment {
private void onOwnLinkLoaded(String link) {
View v = requireNonNull(getView());
- TextView linkView = v.findViewById(R.id.linkView);
+ TextView linkView = v.findViewById(R.id.linkView);
linkView.setText(link);
Button copyButton = v.findViewById(R.id.copyButton);
@@ -110,10 +106,10 @@ public class LinkExchangeFragment extends BaseFragment {
Button shareButton = v.findViewById(R.id.shareButton);
shareButton.setOnClickListener(view ->
- IntentBuilder.from(requireNonNull(getActivity()))
- .setText(link)
- .setType("text/plain")
- .startChooser());
+ IntentBuilder.from(requireActivity())
+ .setText(link)
+ .setType("text/plain")
+ .startChooser());
shareButton.setEnabled(true);
Button continueButton = v.findViewById(R.id.addButton);
@@ -121,47 +117,42 @@ public class LinkExchangeFragment extends BaseFragment {
continueButton.setEnabled(true);
}
- private boolean isInputError() {
- Editable linkText = linkInput.getText();
- boolean briarLink = viewModel.isValidRemoteContactLink(linkText);
- if (!briarLink) {
- if (linkText == null || linkText.length() == 0) {
- linkInputLayout.setError(getString(R.string.missing_link));
- } else {
- linkInputLayout.setError(getString(R.string.invalid_link));
- }
- linkInput.requestFocus();
- return true;
- } else linkInputLayout.setError(null);
- String link = getLink();
- boolean isOurLink = link != null &&
- ("briar://" + link).equals(viewModel.getOurLink().getValue());
- if (isOurLink) {
- linkInputLayout.setError(getString(R.string.own_link_error));
- linkInput.requestFocus();
- return true;
- } else linkInputLayout.setError(null);
- return false;
- }
-
+ /**
+ * Requires {@link AddContactViewModel#getOurLink()} to be loaded.
+ */
@Nullable
- private String getLink() {
+ private String getEnteredLinkOrNull() {
CharSequence link = linkInput.getText();
- if (link == null) return null;
- Matcher matcher = LINK_REGEX.matcher(link);
- if (matcher.matches()) // needs to be called before groups become available
- return matcher.group(2);
- else
+ if (link == null || link.length() == 0) {
+ linkInputLayout.setError(getString(R.string.missing_link));
+ linkInput.requestFocus();
return null;
+ }
+
+ Matcher matcher = LINK_REGEX.matcher(link);
+ if (matcher.find()) {
+ String linkWithoutSchema = matcher.group(2);
+ // Check also if this is our own link. This was loaded already,
+ // because it enables the Continue button which is the only caller.
+ if (("briar://" + linkWithoutSchema)
+ .equals(viewModel.getOurLink().getValue())) {
+ linkInputLayout.setError(getString(R.string.own_link_error));
+ linkInput.requestFocus();
+ return null;
+ }
+ linkInputLayout.setError(null);
+ return linkWithoutSchema;
+ }
+ linkInputLayout.setError(getString(R.string.invalid_link));
+ linkInput.requestFocus();
+ return null;
}
private void onContinueButtonClicked() {
- if (isInputError()) return;
-
- String linkText = getLink();
- if (linkText == null) throw new AssertionError();
- viewModel.setRemoteContactLink(linkText);
+ String link = getEnteredLinkOrNull();
+ if (link == null) return; // invalid link
+ viewModel.setRemoteContactLink(link);
viewModel.onRemoteLinkEntered();
}
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 6bd420004..79d94bde1 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
@@ -4,10 +4,9 @@ import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.UiThread;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
+import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -22,7 +21,8 @@ import org.briarproject.briar.android.fragment.BaseFragment;
import javax.annotation.Nullable;
import javax.inject.Inject;
-import static java.util.Objects.requireNonNull;
+import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
@@ -70,27 +70,31 @@ public class NicknameFragment extends BaseFragment {
return v;
}
- @MainThread
- @UiThread
- private boolean isInputError() {
- boolean validContactName = contactNameInput.getText() != null &&
- contactNameInput.getText().toString().trim().length() > 0;
- if (!validContactName) {
+ @Nullable
+ private String getNicknameOrNull() {
+ Editable name = contactNameInput.getText();
+ if (name == null || name.toString().trim().length() == 0) {
contactNameLayout.setError(getString(R.string.nickname_missing));
contactNameInput.requestFocus();
- return true;
- } else contactNameLayout.setError(null);
- return false;
+ return null;
+ }
+ if (utf8IsTooLong(name.toString(), MAX_AUTHOR_NAME_LENGTH)) {
+ contactNameLayout.setError(getString(R.string.name_too_long));
+ contactNameInput.requestFocus();
+ return null;
+ }
+ contactNameLayout.setError(null);
+ return name.toString().trim();
}
private void onAddButtonClicked() {
- if (isInputError()) return;
+ String name = getNicknameOrNull();
+ if (name == null) return; // invalid nickname
- String name = requireNonNull(contactNameInput.getText()).toString();
viewModel.addContact(name);
Intent intent =
- new Intent(getActivity(), PendingRequestsActivity.class);
+ new Intent(getActivity(), PendingContactListActivity.class);
startActivity(intent);
finish();
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
similarity index 87%
rename from briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsActivity.java
rename to briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
index a11eccde7..a99f3717b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
@@ -22,14 +22,14 @@ import javax.inject.Inject;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
-public class PendingRequestsActivity extends BriarActivity
+public class PendingContactListActivity extends BriarActivity
implements PendingContactListener {
@Inject
ViewModelProvider.Factory viewModelFactory;
- private PendingRequestsViewModel viewModel;
- private PendingRequestsAdapter adapter;
+ private PendingContactListViewModel viewModel;
+ private PendingContactListAdapter adapter;
private BriarRecyclerView list;
@Override
@@ -49,11 +49,11 @@ public class PendingRequestsActivity extends BriarActivity
}
viewModel = ViewModelProviders.of(this, viewModelFactory)
- .get(PendingRequestsViewModel.class);
+ .get(PendingContactListViewModel.class);
viewModel.getPendingContacts()
.observe(this, this::onPendingContactsChanged);
- adapter = new PendingRequestsAdapter(this, this, PendingContact.class);
+ adapter = new PendingContactListAdapter(this, this, PendingContact.class);
list = findViewById(R.id.list);
list.setEmptyText(R.string.no_pending_contacts);
list.setLayoutManager(new LinearLayoutManager(this));
@@ -92,12 +92,11 @@ public class PendingRequestsActivity extends BriarActivity
private void onPendingContactsChanged(Collection contacts) {
if (contacts.isEmpty()) {
- if (!adapter.isEmpty()) {
+ if (adapter.isEmpty()) {
+ list.showData(); // hides progress bar, shows empty text
+ } else {
// all previous contacts have been removed, so we can finish
supportFinishAfterTransition();
- } else {
- adapter.clear();
- list.showData();
}
} else {
adapter.setItems(contacts);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
similarity index 62%
rename from briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsAdapter.java
rename to briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
index 89a5d35cb..f2a25d6c7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
@@ -11,29 +11,29 @@ import org.briarproject.briar.R;
import org.briarproject.briar.android.util.BriarAdapter;
@NotNullByDefault
-public class PendingRequestsAdapter extends
- BriarAdapter {
+class PendingContactListAdapter extends
+ BriarAdapter {
private final PendingContactListener listener;
- public PendingRequestsAdapter(Context ctx, PendingContactListener listener,
+ PendingContactListAdapter(Context ctx, PendingContactListener listener,
Class c) {
super(ctx, c);
this.listener = listener;
}
@Override
- public PendingRequestsViewHolder onCreateViewHolder(
- ViewGroup viewGroup, int i) {
+ public PendingContactViewHolder onCreateViewHolder(ViewGroup viewGroup,
+ int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.list_item_pending_contact, viewGroup, false);
- return new PendingRequestsViewHolder(v, listener);
+ return new PendingContactViewHolder(v, listener);
}
@Override
public void onBindViewHolder(
- PendingRequestsViewHolder pendingRequestsViewHolder, int i) {
- pendingRequestsViewHolder.bind(items.get(i));
+ PendingContactViewHolder pendingContactViewHolder, int i) {
+ pendingContactViewHolder.bind(items.get(i));
}
@Override
@@ -44,15 +44,16 @@ public class PendingRequestsAdapter extends
@Override
public boolean areContentsTheSame(PendingContact item1,
PendingContact item2) {
- return item1.getAlias().equals(item2.getAlias()) &&
- item1.getTimestamp() == item2.getTimestamp();
+ return item1.getId().equals(item2.getId()) &&
+ item1.getAlias().equals(item2.getAlias()) &&
+ item1.getTimestamp() == item2.getTimestamp() &&
+ item1.getState() == item2.getState();
}
@Override
public boolean areItemsTheSame(PendingContact item1,
PendingContact item2) {
- return item1.getAlias().equals(item2.getAlias()) &&
- item1.getTimestamp() == item2.getTimestamp();
+ return item1.getId().equals(item2.getId());
}
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
similarity index 93%
rename from briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewModel.java
rename to briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
index 431e8cd99..1b95d30be 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
@@ -27,11 +27,11 @@ import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.util.LogUtils.logException;
@NotNullByDefault
-public class PendingRequestsViewModel extends AndroidViewModel
+public class PendingContactListViewModel extends AndroidViewModel
implements EventListener {
private final Logger LOG =
- getLogger(PendingRequestsViewModel.class.getName());
+ getLogger(PendingContactListViewModel.class.getName());
@DatabaseExecutor
private final Executor dbExecutor;
@@ -42,7 +42,7 @@ public class PendingRequestsViewModel extends AndroidViewModel
new MutableLiveData<>();
@Inject
- public PendingRequestsViewModel(Application application,
+ public PendingContactListViewModel(Application application,
@DatabaseExecutor Executor dbExecutor,
ContactManager contactManager, EventBus eventBus) {
super(application);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
similarity index 87%
rename from briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewHolder.java
rename to briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
index 7fd552f31..1f0524f2f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingRequestsViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
@@ -16,22 +16,22 @@ import static android.view.View.VISIBLE;
import static org.briarproject.briar.android.util.UiUtils.formatDate;
@NotNullByDefault
-public class PendingRequestsViewHolder extends ViewHolder {
+class PendingContactViewHolder extends ViewHolder {
private final PendingContactListener listener;
private final TextAvatarView avatar;
private final TextView name;
private final TextView time;
private final TextView status;
- private final Button button;
+ private final Button removeButton;
- public PendingRequestsViewHolder(View v, PendingContactListener listener) {
+ PendingContactViewHolder(View v, PendingContactListener listener) {
super(v);
avatar = v.findViewById(R.id.avatar);
name = v.findViewById(R.id.name);
time = v.findViewById(R.id.time);
status = v.findViewById(R.id.status);
- button = v.findViewById(R.id.button);
+ removeButton = v.findViewById(R.id.removeButton);
this.listener = listener;
}
@@ -40,7 +40,7 @@ public class PendingRequestsViewHolder extends ViewHolder {
avatar.setBackgroundBytes(item.getId().getBytes());
name.setText(item.getAlias());
time.setText(formatDate(time.getContext(), item.getTimestamp()));
- button.setOnClickListener(
+ removeButton.setOnClickListener(
v -> listener.onFailedPendingContactRemoved(item));
int color = ContextCompat
@@ -68,7 +68,7 @@ public class PendingRequestsViewHolder extends ViewHolder {
throw new IllegalStateException();
}
status.setTextColor(color);
- button.setVisibility(buttonVisibility);
+ removeButton.setVisibility(buttonVisibility);
}
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelModule.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelModule.java
index 63e8c9eee..d35f2bb5b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelModule.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelModule.java
@@ -4,7 +4,7 @@ import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProvider;
import org.briarproject.briar.android.contact.add.remote.AddContactViewModel;
-import org.briarproject.briar.android.contact.add.remote.PendingRequestsViewModel;
+import org.briarproject.briar.android.contact.add.remote.PendingContactListViewModel;
import org.briarproject.briar.android.conversation.ConversationViewModel;
import org.briarproject.briar.android.conversation.ImageViewModel;
@@ -37,9 +37,9 @@ public abstract class ViewModelModule {
@Binds
@IntoMap
- @ViewModelKey(PendingRequestsViewModel.class)
+ @ViewModelKey(PendingContactListViewModel.class)
abstract ViewModel bindPendingRequestsViewModel(
- PendingRequestsViewModel pendingRequestsViewModel);
+ PendingContactListViewModel pendingContactListViewModel);
@Binds
@Singleton
diff --git a/briar-android/src/main/res/drawable/notification_introduction.xml b/briar-android/src/main/res/drawable/notification_contact_added.xml
similarity index 100%
rename from briar-android/src/main/res/drawable/notification_introduction.xml
rename to briar-android/src/main/res/drawable/notification_contact_added.xml
diff --git a/briar-android/src/main/res/layout/list_item_pending_contact.xml b/briar-android/src/main/res/layout/list_item_pending_contact.xml
index 1420fba72..f1591273e 100644
--- a/briar-android/src/main/res/layout/list_item_pending_contact.xml
+++ b/briar-android/src/main/res/layout/list_item_pending_contact.xml
@@ -68,7 +68,7 @@
tools:text="Dec 24"/>
diff --git a/briar-android/src/main/res/values-ar/strings.xml b/briar-android/src/main/res/values-ar/strings.xml
index af9637768..4610e8320 100644
--- a/briar-android/src/main/res/values-ar/strings.xml
+++ b/briar-android/src/main/res/values-ar/strings.xml
@@ -188,7 +188,7 @@
لقد وافق/ت %1$s على تقديمه/ها إلى %2$s.
لقد رفض/ت %1$sتقديمه/ا إلى %2$s.
ي/تقول %1$sأن %2$s قد رفض/ت التقدمة.
-
+
- لا جهة اتصال تم إضافتها.
- جهة اتصال تم إضافتها.
- جهتيْ اتصال تم إضافتها.
diff --git a/briar-android/src/main/res/values-ast/strings.xml b/briar-android/src/main/res/values-ast/strings.xml
index 9a7853299..7b8375f49 100644
--- a/briar-android/src/main/res/values-ast/strings.xml
+++ b/briar-android/src/main/res/values-ast/strings.xml
@@ -99,7 +99,7 @@
Tentar nuevamente
Error de cámara
-
+
- Añadióse un contactu nuevu.
- Añadiéronse %d contactos nuevos.
diff --git a/briar-android/src/main/res/values-az/strings.xml b/briar-android/src/main/res/values-az/strings.xml
index 90c1b297e..18aef296e 100644
--- a/briar-android/src/main/res/values-az/strings.xml
+++ b/briar-android/src/main/res/values-az/strings.xml
@@ -173,7 +173,7 @@
%1$ssizi %2$s-ə təqdim etmək istədi.
%1$s-ə qəbul olundunuz
%1$s-ə girişdən imtina etdiniz
-
+
- yeni kontaktlar əlavə edildi.
- %dyeni kontaktlar əlavə edildi.
diff --git a/briar-android/src/main/res/values-bg/strings.xml b/briar-android/src/main/res/values-bg/strings.xml
index a86afdf53..5a815155f 100644
--- a/briar-android/src/main/res/values-bg/strings.xml
+++ b/briar-android/src/main/res/values-bg/strings.xml
@@ -114,7 +114,7 @@
%1$s прие представянето на %2$s.
%1$s отказа представянето на %2$s.
%1$s казва, че %2$s отказва представянето.
-
+
- Добавен нов контакт.
- %d добавени нови контакти.
diff --git a/briar-android/src/main/res/values-br/strings.xml b/briar-android/src/main/res/values-br/strings.xml
index 76dab410e..3b0408436 100644
--- a/briar-android/src/main/res/values-br/strings.xml
+++ b/briar-android/src/main/res/values-br/strings.xml
@@ -111,7 +111,7 @@
Kaset eo bet ho tigoradur.
Ur fazi a zo c\'hoarvezet en ur ober an digoradur.
Fazi en ur respont d\'an digoradur
-
+
- Darempred nevez ouzhpennet.
- %d a zarempredoù nevez ouzhpennet.
- %d a zarempredoù nevez ouzhpennet.
diff --git a/briar-android/src/main/res/values-ca/strings.xml b/briar-android/src/main/res/values-ca/strings.xml
index 2e12c473b..403634356 100644
--- a/briar-android/src/main/res/values-ca/strings.xml
+++ b/briar-android/src/main/res/values-ca/strings.xml
@@ -178,7 +178,7 @@ Un cop s\'actualitzi ja li veureu una icona diferent
%1$s ha acceptat conèixer a %2$s.
%1$s ha refusat conèixer a %2$s.
%1$s diu que %2$s ha refusat conèixer-lo.
-
+
- S\'ha afegit un nou contacte.
- S\'han afegit %d nous contactes.
diff --git a/briar-android/src/main/res/values-cs/strings.xml b/briar-android/src/main/res/values-cs/strings.xml
index f84a9c1b7..73610748a 100644
--- a/briar-android/src/main/res/values-cs/strings.xml
+++ b/briar-android/src/main/res/values-cs/strings.xml
@@ -157,7 +157,7 @@
%1$s přijal pozvání do %2$s.
%1$s odmítl pozvání do %2$s.
%1$s řekl, že %2$s odmítl pozvání.
-
+
- Nový kontakt byl přidán.
- Bylo přidáno %d nových kontaktů.
- %d nových kontaktů bylo přidáno.
diff --git a/briar-android/src/main/res/values-de/strings.xml b/briar-android/src/main/res/values-de/strings.xml
index 1370ff7bd..5f7df645d 100644
--- a/briar-android/src/main/res/values-de/strings.xml
+++ b/briar-android/src/main/res/values-de/strings.xml
@@ -177,7 +177,7 @@
%1$s hat die Kontaktempfehlung für %2$s angenommen.
%1$s hat die Kontaktempfehlung von %2$s abgelehnt.
%1$s meldet, dass %2$s die Kontaktempfehlung abgelehnt hat.
-
+
- neuer Kontakt hinzugefügt.
- %d neue Kontakte hinzugefügt.
diff --git a/briar-android/src/main/res/values-es/strings.xml b/briar-android/src/main/res/values-es/strings.xml
index b07a74073..b9b1ecf01 100644
--- a/briar-android/src/main/res/values-es/strings.xml
+++ b/briar-android/src/main/res/values-es/strings.xml
@@ -177,7 +177,7 @@
%1$s aceptó la presentación a %2$s.
%1$s rechazó la presentación a %2$s.
%1$s dice que %2$s rechazó la presentación.
-
+
- nuevo contacto añadido.
- %d nuevos contactos añadidos.
diff --git a/briar-android/src/main/res/values-eu/strings.xml b/briar-android/src/main/res/values-eu/strings.xml
index 6453b4840..6c715d0d1 100644
--- a/briar-android/src/main/res/values-eu/strings.xml
+++ b/briar-android/src/main/res/values-eu/strings.xml
@@ -177,7 +177,7 @@
%1$s erabiltzaileak %2$s erabiltzailearen aurkezpena onartu du.
%1$s erabiltzaileak %2$s erabiltzailearen aurkezpena errefusatu du.
%1$s erabiltzaileak dio %2$s erabiltzaileak aurkezpena errefusatu duela.
-
+
- Kontaktu berria gehitu da.
- %d kontaktu berri gehitu dira.
diff --git a/briar-android/src/main/res/values-fa/strings.xml b/briar-android/src/main/res/values-fa/strings.xml
index b0cdbb952..1c9de0df1 100644
--- a/briar-android/src/main/res/values-fa/strings.xml
+++ b/briar-android/src/main/res/values-fa/strings.xml
@@ -176,7 +176,7 @@
%1$s معرفی به %2$s را پذیرفت.
%1$s معرفی به %2$s را رد کرد.
%1$s می گوید که %2$s دعوت نامه را رد کرد.
-
+
- مخاطب جدید افزوده شد.
- %d مخاطب جدید افزوده شد.
diff --git a/briar-android/src/main/res/values-fi/strings.xml b/briar-android/src/main/res/values-fi/strings.xml
index 2d39a7684..466bac69a 100644
--- a/briar-android/src/main/res/values-fi/strings.xml
+++ b/briar-android/src/main/res/values-fi/strings.xml
@@ -161,7 +161,7 @@
%1$s hyväksyi esittelyn käyttäjälle %2$s.
%1$s kieltäytyi esittelystä käyttäjälle %2$s.
%1$s sanoo, että %2$s on kieltäytynyt esittelystä.
-
+
- Uusi yhteystieto lisätty.
- %d uutta yhteystietoa lisätty.
diff --git a/briar-android/src/main/res/values-fr/strings.xml b/briar-android/src/main/res/values-fr/strings.xml
index bba27543a..1973af293 100644
--- a/briar-android/src/main/res/values-fr/strings.xml
+++ b/briar-android/src/main/res/values-fr/strings.xml
@@ -177,7 +177,7 @@
%1$s a accepté d’être présenté à %2$s.
%1$s a refusé d’être présenté à %2$s.
%1$s annonce que %2$s a refusé la présentation.
-
+
- Un nouveau contact a été ajouté.
- %d nouveaux contacts ont été ajoutés.
diff --git a/briar-android/src/main/res/values-gl/strings.xml b/briar-android/src/main/res/values-gl/strings.xml
index 7c1a5cfc7..5f9b2b3de 100644
--- a/briar-android/src/main/res/values-gl/strings.xml
+++ b/briar-android/src/main/res/values-gl/strings.xml
@@ -177,7 +177,7 @@
%1$s aceptou a presentación a %2$s.
%1$s rexeitou a presentación a %2$s.
%1$s di que %2$srexeitou a presentación.
-
+
- Novo contacto engadido.
- %d novos contactos engadidos.
diff --git a/briar-android/src/main/res/values-he/strings.xml b/briar-android/src/main/res/values-he/strings.xml
index cc8422676..20ac4177c 100644
--- a/briar-android/src/main/res/values-he/strings.xml
+++ b/briar-android/src/main/res/values-he/strings.xml
@@ -192,7 +192,7 @@
%1$s הסכימו להיות מוצגים בפני %2$s.
%1$s סירבו להיות מוצגים בפני %2$s.
%1$s אומרים ש- %2$s סירבו להיות מוצגים בפניהם.
-
+
- נוסף איש קשר חדש.
- נוספו %d אנשי קשר חדשים.
- נוספו %d אנשי קשר חדשים.
diff --git a/briar-android/src/main/res/values-hi/strings.xml b/briar-android/src/main/res/values-hi/strings.xml
index 4ba2fc239..3c8997e65 100644
--- a/briar-android/src/main/res/values-hi/strings.xml
+++ b/briar-android/src/main/res/values-hi/strings.xml
@@ -173,7 +173,7 @@
%1$s%2$s की शुरूआत स्वीकार कर ली
%1$s%2$sकी शुरूआत में गिरावट आई
%1$sकहते हैं कि%2$sने परिचय को अस्वीकार कर दिया
-
+
- नया संपर्क जोड़ा।
- %dनया संपर्क जोड़ा।
diff --git a/briar-android/src/main/res/values-hu/strings.xml b/briar-android/src/main/res/values-hu/strings.xml
index fc21388e5..2e3953e75 100644
--- a/briar-android/src/main/res/values-hu/strings.xml
+++ b/briar-android/src/main/res/values-hu/strings.xml
@@ -163,7 +163,7 @@
%1$s elfogadta a bemutatkozást %2$s számára.
%1$s elutasította a bemutatkozást %2$s számára.
%1$s alapján %2$s elutasította a bemutatkozást.
-
+
- Új kapcsolat hozzáadva.
- %d új kapcsolat hozzáadva.
diff --git a/briar-android/src/main/res/values-it/strings.xml b/briar-android/src/main/res/values-it/strings.xml
index 21b728e9a..a8c97f229 100644
--- a/briar-android/src/main/res/values-it/strings.xml
+++ b/briar-android/src/main/res/values-it/strings.xml
@@ -177,7 +177,7 @@
%1$s ha accettato l\'introduzione a %2$s.
%1$s ha declinato l\'introduzione a %2$s.
%1$s dice che %2$s ha declinato l\'introduzione.
-
+
- Aggiunto nuovo contatto
- Aggiunti %d nuovi contatti.
diff --git a/briar-android/src/main/res/values-mk/strings.xml b/briar-android/src/main/res/values-mk/strings.xml
index abc1d37fa..8d17274cc 100644
--- a/briar-android/src/main/res/values-mk/strings.xml
+++ b/briar-android/src/main/res/values-mk/strings.xml
@@ -177,7 +177,7 @@
%1$s го прифативте запознавањето со %2$s.
%1$s го одбивте запознавањето со %2$s.
%1$s вели дека %2$s го одбил запознавањето.
-
+
- Нов контакт е додаден.
- %d нови контакти се додадени.
diff --git a/briar-android/src/main/res/values-nb/strings.xml b/briar-android/src/main/res/values-nb/strings.xml
index bb24fac68..f0e4c10cb 100644
--- a/briar-android/src/main/res/values-nb/strings.xml
+++ b/briar-android/src/main/res/values-nb/strings.xml
@@ -135,7 +135,7 @@
%1$s er nå bekjent %2$s.
%1$s avslo introduksjonen med %2$s.
%1$s sier at %2$s avslo introduksjonen.
-
+
- Ny kontakt lagt til.
- %d nye kontakter lagt til.
diff --git a/briar-android/src/main/res/values-nl/strings.xml b/briar-android/src/main/res/values-nl/strings.xml
index 6239a9303..ee27956a9 100644
--- a/briar-android/src/main/res/values-nl/strings.xml
+++ b/briar-android/src/main/res/values-nl/strings.xml
@@ -177,7 +177,7 @@
%1$s heeft de introductie aan %2$sgeaccepteerd.
%1$s heeft de introductie aan %2$s afgewezen.
%1$s zegt dat %2$s je introductie heeft afgewezen.
-
+
- Nieuw contact is toegevoegd.
- %d nieuwe contacten zijn toegevoegd.
diff --git a/briar-android/src/main/res/values-oc/strings.xml b/briar-android/src/main/res/values-oc/strings.xml
index 6a0baca28..b2e5b88f8 100644
--- a/briar-android/src/main/res/values-oc/strings.xml
+++ b/briar-android/src/main/res/values-oc/strings.xml
@@ -179,7 +179,7 @@ Volètz suprimir vòstre compte e ne crear un nòu ?\n
%1$s a acceptat d’apondre %2$s.
%1$s a refusat d’apondre %2$s.
%1$s anóncia que %2$s a refusat la convidacion.
-
+
- Nòu contacte ajustat.
- %d nòus contactes ajustats.
diff --git a/briar-android/src/main/res/values-pl/strings.xml b/briar-android/src/main/res/values-pl/strings.xml
index 0a1adccf3..e24778450 100644
--- a/briar-android/src/main/res/values-pl/strings.xml
+++ b/briar-android/src/main/res/values-pl/strings.xml
@@ -172,7 +172,7 @@
%1$s zaakceptował udostępnienie kontaktu %2$s
%1$s odrzucił udostępnienie kontaktu %2$s
%1$s mówi, że %2$s odrzucił udostępnienie kontaktu.
-
+
- Nowy kontakt został dodany.
- %d nowych kontaktów zostało dodanych.
- %d nowych kontaktów zostało dodanych.
diff --git a/briar-android/src/main/res/values-pt-rBR/strings.xml b/briar-android/src/main/res/values-pt-rBR/strings.xml
index b0eaea618..6ea72ea4b 100644
--- a/briar-android/src/main/res/values-pt-rBR/strings.xml
+++ b/briar-android/src/main/res/values-pt-rBR/strings.xml
@@ -164,7 +164,7 @@
%1$s aceitou ser apresentado a %2$s.
%1$s recusou ser apresentado a %2$s.
%1$s disse que %2$s recusou a apresentação.
-
+
- Novo contato adicionado.
- %d novos contatos adicionados.
diff --git a/briar-android/src/main/res/values-ro/strings.xml b/briar-android/src/main/res/values-ro/strings.xml
index ab98e8c89..0a413f9af 100644
--- a/briar-android/src/main/res/values-ro/strings.xml
+++ b/briar-android/src/main/res/values-ro/strings.xml
@@ -182,7 +182,7 @@
%1$s a acceptat recomandarea pentru %2$s.
%1$s a refuzat recomandarea pentru %2$s.
%1$s spune că %2$s a refuzat recomandarea.
-
+
- Un nou contact adăugat.
- %d contacte noi adăugate.
- %d de contacte noi adăugate.
diff --git a/briar-android/src/main/res/values-ru/strings.xml b/briar-android/src/main/res/values-ru/strings.xml
index f0dc9b89d..863b89e0e 100644
--- a/briar-android/src/main/res/values-ru/strings.xml
+++ b/briar-android/src/main/res/values-ru/strings.xml
@@ -189,7 +189,7 @@
%1$s принял представление %2$s.
%1$s отказался от представления %2$s.
%1$s сообщает, что %2$s отказался от представления.
-
+
- Новый контакт добавлен.
- %d новых контакта добавлено.
- %d новых контактов добавлено.
diff --git a/briar-android/src/main/res/values-sq/strings.xml b/briar-android/src/main/res/values-sq/strings.xml
index 5200b25a7..0db24595d 100644
--- a/briar-android/src/main/res/values-sq/strings.xml
+++ b/briar-android/src/main/res/values-sq/strings.xml
@@ -177,7 +177,7 @@
%1$s pranoi prezantimin te %2$s.
%1$s hodhi poshtë prezantimin te %2$s.
%1$s thotë se %2$s hodhi poshtë prezantimin.
-
+
- U shtua kontakt i ri.
- U shtuan %d kontakte të rinj.
diff --git a/briar-android/src/main/res/values-sr/strings.xml b/briar-android/src/main/res/values-sr/strings.xml
index 98615112c..ab029c588 100644
--- a/briar-android/src/main/res/values-sr/strings.xml
+++ b/briar-android/src/main/res/values-sr/strings.xml
@@ -165,7 +165,7 @@ Izaberite dugačku lozinku koju je teško pogoditi, kao četiri nasumične rije
%1$s prihvata upoznavanje sa %2$s.
%1$s je prihvatio-la upoznavanje sa kontaktom %2$s.
%1$s kaže da je %2$s odbio-la upoznavanje.
-
+
- Novi kontakt je dodat.
- %d nova kontakta dodata.
- %d novih kontakata dodato.
diff --git a/briar-android/src/main/res/values-tr/strings.xml b/briar-android/src/main/res/values-tr/strings.xml
index 3cfe693aa..c788a23f6 100644
--- a/briar-android/src/main/res/values-tr/strings.xml
+++ b/briar-android/src/main/res/values-tr/strings.xml
@@ -112,7 +112,7 @@
%1$s, %2$s ile tanışmayı kabul etti.
%1$s, %2$s ile tanışmayı reddetti.
%1$s, %2$s kişisinin tanışmayı reddettiğini söyledi.
-
+
- Yeni kişi eklendi.
- %d yeni kişi eklendi.
diff --git a/briar-android/src/main/res/values-uk/strings.xml b/briar-android/src/main/res/values-uk/strings.xml
index 6a8dd48ff..ac8203d5d 100644
--- a/briar-android/src/main/res/values-uk/strings.xml
+++ b/briar-android/src/main/res/values-uk/strings.xml
@@ -187,7 +187,7 @@
%1$sприйняв(-ла) запит на знайомство із %2$s.
%1$sвідхилив(-ла) запит на знайомство з %2$s.
%1$s повідомляє, що %2$s відхилив(-ла) запит на знайомство.
-
+
- Новий контакт додано.
- %d нові контакти додано.
- %d нових контактів додано.
diff --git a/briar-android/src/main/res/values-zh-rCN/strings.xml b/briar-android/src/main/res/values-zh-rCN/strings.xml
index 80623e22c..c88a9d3fe 100644
--- a/briar-android/src/main/res/values-zh-rCN/strings.xml
+++ b/briar-android/src/main/res/values-zh-rCN/strings.xml
@@ -170,7 +170,7 @@
%1$s 已接受与 %2$s 建立联系。
%1$s 已谢绝与 %2$s 建立联系。
%1$s 表示 %2$s 谢绝了介绍。
-
+
- 已添加 %d 位新联系人。
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 9ee44a3bb..c14785314 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -171,47 +171,46 @@
- Add Contact At A Distance
+ Add Contact at a Distance
Add contact nearby
Add contact at a distance
Give contact a nickname
Enter the link from your contact here
Contact\'s link
Paste
- QR Code
Add contact
Copy
Share
- QR Code
Exchange links
Choose Nickname
Enter a nickname
- Give your contact a nickname! Only you can see it.
+ Give your contact a nickname. Only you can see it.
Give this link to the contact you want to add
Briar link
Link copied
- "There are pending contact requests"
- Pending contact requests
+ There are pending contact requests
+ Pending Contact Requests
No pending contacts
Connecting…
- Scan QR Code
- Your QR Code
- Camera Error
Waiting for contact to come online…\n\nDid they enter your link already?
Connecting…
Adding contact…
Adding contact has failed
- Please enter your contact\'s link
+ Enter your contact\'s link, not your own
Please enter a nickname
Invalid link
- Please enter link
-
+ Please enter a link
+
1
-
+
2
-
+
+ - New contact added.
+ - %d new contacts added.
+
+
Introduce your contacts
You can introduce your contacts to each other, so they don\'t need to meet in person to connect on Briar.
Make Introduction
@@ -233,10 +232,6 @@
%1$s accepted the introduction to %2$s.
%1$s declined the introduction to %2$s.
%1$s says that %2$s declined the introduction.
-
- - New contact added.
- - %d new contacts added.
-
No groups to show