@@ -97,10 +97,15 @@ return [[[groups objectForKey: group] copy] autorelease]; } - (void)addRosterItem: (XMPPRosterItem*)rosterItem { + [self updateRosterItem: rosterItem]; +} + +- (void)updateRosterItem: (XMPPRosterItem*)rosterItem +{ XMPPIQ *iq = [XMPPIQ IQWithType: @"set" ID: [connection generateStanzaID]]; OFXMLElement *query = [OFXMLElement elementWithName: @"query" namespace: XMPP_NS_ROSTER]; OFXMLElement *item = [OFXMLElement elementWithName: @"item" @@ -115,11 +120,31 @@ for (OFString *group in rosterItem.groups) [item addChild: [OFXMLElement elementWithName: @"group" namespace: XMPP_NS_ROSTER stringValue: group]]; + [query addChild: item]; + [iq addChild: query]; + + [connection sendStanza: iq]; +} + +- (void)deleteRosterItem: (XMPPRosterItem*)rosterItem +{ + XMPPIQ *iq = [XMPPIQ IQWithType: @"set" + ID: [connection generateStanzaID]]; + OFXMLElement *query = [OFXMLElement elementWithName: @"query" + namespace: XMPP_NS_ROSTER]; + OFXMLElement *item = [OFXMLElement elementWithName: @"item" + namespace: XMPP_NS_ROSTER]; + + [item addAttributeWithName: @"jid" + stringValue: rosterItem.JID.bareJID]; + [item addAttributeWithName: @"subscription" + stringValue: @"remove"]; + [query addChild: item]; [iq addChild: query]; [connection sendStanza: iq]; } @end