@@ -30,12 +30,12 @@ #import "XMPPRosterItem.h" @implementation XMPPContactManager @synthesize contacts = _contacts; -- initWithConnection: (XMPPConnection *)connection - roster: (XMPPRoster *)roster +- (instancetype)initWithConnection: (XMPPConnection *)connection + roster: (XMPPRoster *)roster { self = [super init]; @try { _connection = connection; @@ -88,31 +88,26 @@ [_delegates removeDelegate: delegate]; } - (void)rosterWasReceived: (XMPPRoster *)roster { - OFEnumerator *contactEnumerator; - XMPPContact *contact; OFDictionary *rosterItems; - OFEnumerator *rosterItemEnumerator; - OFString *bareJID; - contactEnumerator = [_contacts objectEnumerator]; - while ((contact = [contactEnumerator nextObject]) != nil) { + for (XMPPContact *contact in _contacts) [_delegates broadcastSelector: @selector(contactManager: didRemoveContact:) withObject: self withObject: contact]; - } [_contacts release]; + _contacts = nil; _contacts = [[OFMutableDictionary alloc] init]; + rosterItems = [roster rosterItems]; - rosterItemEnumerator = [rosterItems keyEnumerator]; - while ((bareJID = [rosterItemEnumerator nextObject]) != nil) { - contact = [[[XMPPContact alloc] init] autorelease]; - [contact XMPP_setRosterItem: + for (OFString *bareJID in rosterItems) { + XMPPContact *contact = [[[XMPPContact alloc] init] autorelease]; + [contact xmpp_setRosterItem: [rosterItems objectForKey: bareJID]]; [_contacts setObject: contact forKey: bareJID]; [_delegates broadcastSelector: @selector(contactManager: didAddContact:) @@ -139,11 +134,11 @@ return; } if (contact == nil) { contact = [[[XMPPContact alloc] init] autorelease]; - [contact XMPP_setRosterItem: rosterItem]; + [contact xmpp_setRosterItem: rosterItem]; [_contacts setObject: contact forKey: bareJID]; [_delegates broadcastSelector: @selector(contactManager: didAddContact:) withObject: self @@ -151,11 +146,11 @@ } else { [_delegates broadcastSelector: @selector(contact: willUpdateWithRosterItem:) withObject: contact withObject: rosterItem]; - [contact XMPP_setRosterItem: rosterItem]; + [contact xmpp_setRosterItem: rosterItem]; } } - (void)connection: (XMPPConnection *)connection didReceivePresence: (XMPPPresence *)presence @@ -178,11 +173,11 @@ if (contact == nil) return; /* Available presence */ if ([type isEqual: @"available"]) { - [contact XMPP_setPresence: presence + [contact xmpp_setPresence: presence resource: [JID resource]]; [_delegates broadcastSelector: @selector(contact: didSendPresence:) withObject: contact withObject: presence]; @@ -189,11 +184,11 @@ return; } /* Unavailable presence */ if ([type isEqual: @"unavailable"]) { - [contact XMPP_removePresenceForResource: [JID resource]]; + [contact xmpp_removePresenceForResource: [JID resource]]; [_delegates broadcastSelector: @selector(contact: didSendPresence:) withObject: contact withObject: presence]; return; @@ -207,12 +202,12 @@ XMPPContact *contact = [_contacts objectForKey: [JID bareJID]]; if (contact == nil) return; - [contact XMPP_setLockedOnJID: JID]; + [contact xmpp_setLockedOnJID: JID]; [_delegates broadcastSelector: @selector(contact:didSendMessage:) withObject: contact withObject: message]; } @end