From e8ad6bd39f90e41b5adf1bdbbc105bdbd5a14006 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 28 Jun 2019 15:50:12 +0200 Subject: [PATCH] Fixed issue in history detail regarding LIME capacity for chat + fixed issue in history detail & contact detail if force encryption setting is set --- .../linphone/contacts/ContactDetailsFragment.java | 3 +++ .../java/org/linphone/contacts/LinphoneContact.java | 12 +++++++++--- .../org/linphone/history/HistoryDetailFragment.java | 6 +++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java index 401260f9a..1351dd2a8 100644 --- a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java +++ b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java @@ -343,6 +343,9 @@ public class ContactDetailsFragment extends Fragment implements ContactsUpdatedL v.findViewById(R.id.contact_chat_secured).setVisibility(View.GONE); } + if (getResources().getBoolean(R.bool.force_end_to_end_encryption_in_chat)) { + v.findViewById(R.id.contact_chat).setVisibility(View.GONE); + } if (getResources().getBoolean(R.bool.disable_chat)) { v.findViewById(R.id.contact_chat).setVisibility(View.GONE); v.findViewById(R.id.contact_chat_secured).setVisibility(View.GONE); diff --git a/app/src/main/java/org/linphone/contacts/LinphoneContact.java b/app/src/main/java/org/linphone/contacts/LinphoneContact.java index 3f5a9565a..276d93a84 100644 --- a/app/src/main/java/org/linphone/contacts/LinphoneContact.java +++ b/app/src/main/java/org/linphone/contacts/LinphoneContact.java @@ -425,9 +425,7 @@ public class LinphoneContact extends AndroidContact } public String getContactFromPresenceModelForUriOrTel(String uri) { - if (mFriend != null && mFriend.getPresenceModelForUriOrTel(uri) != null) { - return mFriend.getPresenceModelForUriOrTel(uri).getContact(); } return null; @@ -441,8 +439,16 @@ public class LinphoneContact extends AndroidContact } public boolean hasPresenceModelForUriOrTelCapability(String uri, FriendCapability capability) { - if (mFriend != null && mFriend.getPresenceModelForUriOrTel(uri) != null) { + if (mFriend == null) return false; + if (mFriend.getPresenceModelForUriOrTel(uri) != null) { return mFriend.getPresenceModelForUriOrTel(uri).hasCapability(capability); + } else { + for (LinphoneNumberOrAddress noa : getNumbersOrAddresses()) { + if (getContactFromPresenceModelForUriOrTel(noa.getValue()).equals(uri)) { + return mFriend.getPresenceModelForUriOrTel(noa.getValue()) + .hasCapability(capability); + } + } } return false; } diff --git a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java index 391dd6b85..acc4e28ec 100644 --- a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java @@ -110,6 +110,9 @@ public class HistoryDetailFragment extends Fragment { } }); + if (getResources().getBoolean(R.bool.force_end_to_end_encryption_in_chat)) { + chat.setVisibility(View.GONE); + } if (getResources().getBoolean(R.bool.disable_chat)) { chat.setVisibility(View.GONE); mChatSecured.setVisibility(View.GONE); @@ -182,6 +185,7 @@ public class HistoryDetailFragment extends Fragment { Core core = LinphoneManager.getCore(); if (address != null && core != null) { + address.clean(); ProxyConfig proxyConfig = core.getDefaultProxyConfig(); CallLog[] logs; if (proxyConfig != null) { @@ -205,7 +209,7 @@ public class HistoryDetailFragment extends Fragment { if (!getResources().getBoolean(R.bool.disable_chat) && mContact.hasPresenceModelForUriOrTelCapability( - mSipUri, FriendCapability.LimeX3Dh)) { + address.asStringUriOnly(), FriendCapability.LimeX3Dh)) { mChatSecured.setVisibility(View.VISIBLE); } } else {