From 53a748409d289eab9fd91902b7b2687738f737ad Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 19 Nov 2019 16:06:38 +0100 Subject: [PATCH] Added logs & fixed some issues in contact removal --- .../org/linphone/contacts/AndroidContact.java | 1 + .../contacts/AsyncContactsLoader.java | 7 +++--- .../linphone/contacts/ContactsManager.java | 1 + .../linphone/contacts/LinphoneContact.java | 22 +++++++++++++++---- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/AndroidContact.java b/app/src/main/java/org/linphone/contacts/AndroidContact.java index 4953d8f95..69239d0ce 100644 --- a/app/src/main/java/org/linphone/contacts/AndroidContact.java +++ b/app/src/main/java/org/linphone/contacts/AndroidContact.java @@ -146,6 +146,7 @@ class AndroidContact implements Serializable { } void deleteAndroidContact() { + Log.i("[Contact] Deleting Android contact ", this); ContactsManager.getInstance().delete(mAndroidId); } diff --git a/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java b/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java index 8ad05b069..d8614fabd 100644 --- a/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java +++ b/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java @@ -95,14 +95,13 @@ class AsyncContactsLoader extends AsyncTask ops = new ArrayList<>(); for (String id : ids) { + Log.i("[Contacts Manager] Adding Android contact id ", id, " to batch removal"); String[] args = new String[] {id}; ops.add( ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI) diff --git a/app/src/main/java/org/linphone/contacts/LinphoneContact.java b/app/src/main/java/org/linphone/contacts/LinphoneContact.java index b8d9ce427..6c24b0594 100644 --- a/app/src/main/java/org/linphone/contacts/LinphoneContact.java +++ b/app/src/main/java/org/linphone/contacts/LinphoneContact.java @@ -401,12 +401,23 @@ public class LinphoneContact extends AndroidContact } public void deleteFriend() { + if (mFriend == null) return; Core core = LinphoneManager.getCore(); - if (mFriend != null && core != null) { - for (FriendList list : core.getFriendsLists()) { - list.removeFriend(mFriend); + if (core == null) return; + + boolean found = false; + Log.i("[Contact] Deleting friend ", mFriend.getName(), " for contact ", this); + for (FriendList list : core.getFriendsLists()) { + FriendList.Status status = list.removeFriend(mFriend); + if (status == FriendList.Status.OK) { + Log.w("[Contact] Friend found in list " + list.getDisplayName()); + found = true; } } + + if (!found) { + Log.w("[Contact] Friend removal failed, friend doesn't belong to any friend list"); + } } public void createOrUpdateFriendFromNativeContact() { @@ -645,7 +656,10 @@ public class LinphoneContact extends AndroidContact } public void delete() { - deleteAndroidContact(); + Log.i("[Contact] Deleting contact ", this); + if (isAndroidContact()) { + deleteAndroidContact(); + } if (isFriend()) { deleteFriend(); }