Fix contacts management

This commit is contained in:
Erwan Croze 2018-06-08 09:31:36 +02:00
parent 07fe05e532
commit d2ede2973d
2 changed files with 6 additions and 6 deletions

View file

@ -264,7 +264,7 @@ public class ContactsManager extends ContentObserver {
} }
public synchronized void setContacts(List<LinphoneContact> c) { public synchronized void setContacts(List<LinphoneContact> c) {
if (contacts.isEmpty()) { if (contacts.isEmpty() || contacts.size() > c.size()) {
contacts = c; contacts = c;
} else { } else {
for (LinphoneContact contact : c) { for (LinphoneContact contact : c) {
@ -273,10 +273,11 @@ public class ContactsManager extends ContentObserver {
} }
} }
} }
Collections.sort(contacts);
} }
public synchronized void setSipContacts(List<LinphoneContact> c) { public synchronized void setSipContacts(List<LinphoneContact> c) {
if (sipContacts.isEmpty()) { if (sipContacts.isEmpty() || sipContacts.size() > c.size()) {
sipContacts = c; sipContacts = c;
} else { } else {
for (LinphoneContact contact : c) { for (LinphoneContact contact : c) {
@ -285,6 +286,7 @@ public class ContactsManager extends ContentObserver {
} }
} }
} }
Collections.sort(sipContacts);
} }
public synchronized void refreshSipContact(Friend lf) { public synchronized void refreshSipContact(Friend lf) {
@ -466,8 +468,6 @@ public class ContactsManager extends ContentObserver {
Log.w("[Permission] Read contacts permission wasn't granted, only fetch Friends"); Log.w("[Permission] Read contacts permission wasn't granted, only fetch Friends");
} }
Collections.sort(contacts);
Collections.sort(sipContacts);
setContacts(contacts); setContacts(contacts);
setSipContacts(sipContacts); setSipContacts(sipContacts);

View file

@ -40,7 +40,7 @@ public class LinphoneNumberOrAddress implements Serializable, Comparable<Linphon
@Override @Override
public int compareTo(LinphoneNumberOrAddress noa) { public int compareTo(LinphoneNumberOrAddress noa) {
if (noa.isSIPAddress() == isSIPAddress()) { if (noa.isSIPAddress() == isSIPAddress() && noa.getValue() != null) {
return noa.getValue().compareTo(getValue()); return noa.getValue().compareTo(getValue());
} else { } else {
return isSIPAddress() ? -1 : 1; return isSIPAddress() ? -1 : 1;
@ -51,7 +51,7 @@ public class LinphoneNumberOrAddress implements Serializable, Comparable<Linphon
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj.getClass() != LinphoneNumberOrAddress.class) return false; if (obj.getClass() != LinphoneNumberOrAddress.class) return false;
LinphoneNumberOrAddress noa = (LinphoneNumberOrAddress) obj; LinphoneNumberOrAddress noa = (LinphoneNumberOrAddress) obj;
return (this.compareTo(noa) == 0); return (this != null && this.compareTo(noa) == 0);
} }
public boolean isSIPAddress() { public boolean isSIPAddress() {