contacts: add block function
With a long click on the contact in the smartlist or a click on the
option in the conversation, it is possible to block a contact. This
contact is added in the blocked contacts list but it is not removed
to the smartlist for now.
Change-Id: I82d691d1f16c8436673acd3cddbf7daae9b5e504
Reviewed-by: Hadrien De Sousa <hadrien.desousa@savoirfairelinux.com>
Tuleap: #1500
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index 9805b16..4e04a54 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -500,11 +500,34 @@
this.mConversation.getContact(),
this);
return true;
+ case R.id.menuitem_block:
+ blockContact();
+ return true;
default:
return super.onOptionsItemSelected(item);
}
}
+ private void blockContact() {
+ Pair<Account, Uri> guess = guess();
+ if (guess.first == null || guess.second == null || !guess.first.isRing() || !guess.second.isRingId()) {
+ return;
+ }
+
+ String accountId = guess.first.getAccountID();
+ String contactId = guess.second.getRawUriString();
+
+ String[] split = contactId.split(":");
+ if (split.length > 1) {
+ contactId = split[1];
+ }
+
+ mContactService.removeContact(accountId, contactId);
+ if (getActivity() instanceof ConversationActivity) {
+ getActivity().finish();
+ }
+ }
+
/**
* Guess account and number to use to initiate a call
*/
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
index 882d188..43973e2 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
@@ -483,6 +483,9 @@
case 1:
ActionHelper.launchDeleteAction(getActivity(), conversation, SmartListFragment.this);
break;
+ case 2:
+ presenter.removeContact(conversation.getLastAccountUsed(), conversation.getContact().getDisplayName());
+ break;
}
}
});
diff --git a/ring-android/app/src/main/res/drawable/ic_block_white.xml b/ring-android/app/src/main/res/drawable/ic_block_white.xml
new file mode 100644
index 0000000..a93fae1
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable/ic_block_white.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM4,12c0,-4.42 3.58,-8 8,-8 1.85,0 3.55,0.63 4.9,1.69L5.69,16.9C4.63,15.55 4,13.85 4,12zM12,20c-1.85,0 -3.55,-0.63 -4.9,-1.69L18.31,7.1C19.37,8.45 20,10.15 20,12c0,4.42 -3.58,8 -8,8z"
+ android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/ring-android/app/src/main/res/menu/conversation_actions.xml b/ring-android/app/src/main/res/menu/conversation_actions.xml
index fa321d7..af594d9 100644
--- a/ring-android/app/src/main/res/menu/conversation_actions.xml
+++ b/ring-android/app/src/main/res/menu/conversation_actions.xml
@@ -32,4 +32,10 @@
android:title="@string/conversation_action_delete_this"
app:showAsAction="ifRoom" />
+ <item
+ android:id="@+id/menuitem_block"
+ android:icon="@drawable/ic_block_white"
+ android:title="@string/conversation_action_block_this"
+ app:showAsAction="ifRoom" />
+
</menu>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/arrays.xml b/ring-android/app/src/main/res/values/arrays.xml
index d250a8b..2527780 100644
--- a/ring-android/app/src/main/res/values/arrays.xml
+++ b/ring-android/app/src/main/res/values/arrays.xml
@@ -28,6 +28,7 @@
<string-array name="conversation_actions">
<item>@string/conversation_action_copy_peer_number</item>
<item>@string/conversation_action_delete_this</item>
+ <item>@string/conversation_action_block_this</item>
</string-array>
</resources>
diff --git a/ring-android/app/src/main/res/values/strings.xml b/ring-android/app/src/main/res/values/strings.xml
index f84fce1..06f2dc3 100644
--- a/ring-android/app/src/main/res/values/strings.xml
+++ b/ring-android/app/src/main/res/values/strings.xml
@@ -161,6 +161,7 @@
<string name="conversation_action_copy_peer_number">Copy number</string>
<string name="conversation_action_copied_peer_number_clipboard">%1$s copied to clipboard</string>
<string name="conversation_action_select_peer_number">Select a number</string>
+ <string name="conversation_action_block_this">Block this contact</string>
<!-- Contacts -->
<string name="add_call_contact_number_to_contacts">Add %1$s ?</string>