mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 02:39:05 +01:00
Merge branch '1554-remove-pending-contacts' into 'master'
Allow pending contacts to be removed at any time Closes #1554 See merge request briar/briar!1098
This commit is contained in:
@@ -2,12 +2,15 @@ package org.briarproject.briar.android.contact.add.remote;
|
||||
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.arch.lifecycle.ViewModelProviders;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import org.briarproject.bramble.api.contact.PendingContact;
|
||||
import org.briarproject.bramble.api.contact.PendingContactId;
|
||||
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
|
||||
import org.briarproject.briar.R;
|
||||
@@ -20,6 +23,8 @@ import java.util.Collection;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.briarproject.bramble.api.contact.PendingContactState.FAILED;
|
||||
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public class PendingContactListActivity extends BriarActivity
|
||||
@@ -85,7 +90,29 @@ public class PendingContactListActivity extends BriarActivity
|
||||
|
||||
@Override
|
||||
public void onFailedPendingContactRemoved(PendingContact pendingContact) {
|
||||
viewModel.removePendingContact(pendingContact.getId());
|
||||
// no need to show warning dialog for failed pending contacts
|
||||
if (pendingContact.getState() == FAILED) {
|
||||
removePendingContact(pendingContact.getId());
|
||||
return;
|
||||
}
|
||||
// show warning dialog
|
||||
OnClickListener removeListener = (dialog, which) ->
|
||||
removePendingContact(pendingContact.getId());
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||
PendingContactListActivity.this, R.style.BriarDialogTheme);
|
||||
builder.setTitle(
|
||||
getString(R.string.dialog_title_remove_pending_contact));
|
||||
builder.setMessage(
|
||||
getString(R.string.dialog_message_remove_pending_contact));
|
||||
builder.setNegativeButton(R.string.groups_remove, removeListener);
|
||||
builder.setPositiveButton(R.string.cancel, null);
|
||||
// re-enable remove button when dialog is dismissed/canceled
|
||||
builder.setOnDismissListener(dialog -> adapter.notifyDataSetChanged());
|
||||
builder.show();
|
||||
}
|
||||
|
||||
private void removePendingContact(PendingContactId id) {
|
||||
viewModel.removePendingContact(id);
|
||||
}
|
||||
|
||||
private void onPendingContactsChanged(
|
||||
|
||||
@@ -11,8 +11,6 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.view.TextAvatarView;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.briar.android.util.UiUtils.formatDate;
|
||||
|
||||
@NotNullByDefault
|
||||
@@ -48,7 +46,6 @@ class PendingContactViewHolder extends ViewHolder {
|
||||
|
||||
int color = ContextCompat
|
||||
.getColor(status.getContext(), R.color.briar_green);
|
||||
int buttonVisibility = GONE;
|
||||
switch (item.getState()) {
|
||||
case WAITING_FOR_CONNECTION:
|
||||
color = ContextCompat
|
||||
@@ -65,13 +62,11 @@ class PendingContactViewHolder extends ViewHolder {
|
||||
color = ContextCompat
|
||||
.getColor(status.getContext(), R.color.briar_red);
|
||||
status.setText(R.string.adding_contact_failed);
|
||||
buttonVisibility = VISIBLE;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
status.setTextColor(color);
|
||||
removeButton.setVisibility(buttonVisibility);
|
||||
removeButton.setEnabled(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/margin_large"
|
||||
android:layout_marginLeft="@dimen/margin_large"
|
||||
android:layout_marginRight="@dimen/margin_large"
|
||||
android:layout_marginStart="@dimen/margin_large"
|
||||
android:layout_marginTop="@dimen/margin_large"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
@@ -43,12 +44,10 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/adding_contact_failed"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintEnd_toStartOf="@+id/time"
|
||||
app:layout_constraintEnd_toStartOf="@+id/removeButton"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="@+id/name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/name"
|
||||
@@ -73,12 +72,10 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/groups_remove"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="@+id/time"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/status"
|
||||
tools:visibility="visible"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/time"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
|
||||
@@ -197,6 +197,8 @@
|
||||
<string name="connecting">Connecting…</string>
|
||||
<string name="adding_contact">Adding contact…</string>
|
||||
<string name="adding_contact_failed">Adding contact has failed</string>
|
||||
<string name="dialog_title_remove_pending_contact">Confirm Removal</string>
|
||||
<string name="dialog_message_remove_pending_contact">This contact is still being added. If you remove it now, it will not be added.</string>
|
||||
<string name="own_link_error">Enter your contact\'s link, not your own</string>
|
||||
<string name="nickname_missing">Please enter a nickname</string>
|
||||
<string name="invalid_link">Invalid link</string>
|
||||
|
||||
Reference in New Issue
Block a user