[guardian-dev] [PATCH 1/3] XMPP: Fix contact list loading.

Adrian-Ken Rueegsegger ken at codelabs.ch
Sat Nov 20 17:23:48 EST 2010


Contacts which have no assigned group are put into the default group.

Signed-off-by: Adrian-Ken Rueegsegger <ken at codelabs.ch>
---
 .../android/im/plugin/xmpp/XmppConnection.java     |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/org/gitian/android/im/plugin/xmpp/XmppConnection.java b/src/org/gitian/android/im/plugin/xmpp/XmppConnection.java
index 3f06184..ab9a277 100755
--- a/src/org/gitian/android/im/plugin/xmpp/XmppConnection.java
+++ b/src/org/gitian/android/im/plugin/xmpp/XmppConnection.java
@@ -640,10 +640,8 @@ public class XmppConnection extends ImConnection {
 			Roster roster = mConnection.getRoster();
 			roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
 			listenToRoster(roster);
-			boolean haveGroup = false;
 			Set<String> seen = new HashSet<String>();
 			for (Iterator<RosterGroup> giter = roster.getGroups().iterator(); giter.hasNext();) {
-				haveGroup = true;
 				RosterGroup group = giter.next();
 				Collection<Contact> contacts = new ArrayList<Contact>();
 				for (Iterator<RosterEntry> iter = group.getEntries().iterator(); iter.hasNext();) {
@@ -669,9 +667,20 @@ public class XmppConnection extends ImConnection {
 				notifyContactListLoaded(cl);
 				notifyContactsPresenceUpdated(contacts.toArray(new Contact[0]));
 			}
-			if (!haveGroup) {
+			if (roster.getUnfiledEntryCount() > 0) {
 				roster.createGroup("Friends");
-				ContactList cl = new ContactList(mUser.getAddress(), "Friends" , true, new ArrayList<Contact>(), this);
+				Collection<Contact> contacts = new ArrayList<Contact>();
+				for (Iterator<RosterEntry> iter = roster.getUnfiledEntries().iterator(); iter.hasNext();) {
+					RosterEntry entry = iter.next();
+					String address = parseAddressBase(entry.getUser());
+					String name = entry.getName();
+					if (name == null)
+						name = address;
+					XmppAddress xaddress = new XmppAddress(name, address);
+					Contact contact = new Contact(xaddress, name);
+					contacts.add(contact);
+				}
+				ContactList cl = new ContactList(mUser.getAddress(), "Friends" , true, contacts, this);
 				mDefaultContactList = cl;
 				notifyContactListLoaded(cl);
 			}
-- 
1.6.5



More information about the Guardian-dev mailing list