Overview
Comment: | XMPPContactManager: Support for handling subscription requests |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9d9f036640161d0e0bb461c5f72b8a17 |
User & Date: | florob@babelmonkeys.de on 2013-06-09 18:26:24 |
Other Links: | manifest | tags |
Context
2013-06-12
| ||
12:53 | XMPPDiscoEntity: Caps hash must be Base64 encoded SHA1 check-in: c74a473e92 user: florob@babelmonkeys.de tags: trunk | |
2013-06-09
| ||
18:26 | XMPPContactManager: Support for handling subscription requests check-in: 9d9f036640 user: florob@babelmonkeys.de tags: trunk | |
18:21 | XMPPContactManager: Remove contact from store after broadcasting the selector check-in: b649d4350d user: florob@babelmonkeys.de tags: trunk | |
Changes
Modified src/XMPPContactManager.h from [6012950886] to [6573f2496e].
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 66 | * * \param manager The contact manager that removed the contact * \param contact The contact that was removed */ - (void)contactManager: (XMPPContactManager*)manager didRemoveContact: (XMPPContact*)contact; /** * \brief This callback is called whenever a contact is about to change its * roster item * * \param contact The contact about to updated its roster item * \param rosterItem The roster item the contact is going to update with */ | > > > > > > > > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | * * \param manager The contact manager that removed the contact * \param contact The contact that was removed */ - (void)contactManager: (XMPPContactManager*)manager didRemoveContact: (XMPPContact*)contact; /** * \brief This callback is called when a subscription request is received * * \param manager The contact manager that received the request * \param presence The type=subscribe presence */ - (void)contactManager: (XMPPContactManager*)manager didReceiveSubscriptionRequest: (XMPPPresence*)presence; /** * \brief This callback is called whenever a contact is about to change its * roster item * * \param contact The contact about to updated its roster item * \param rosterItem The roster item the contact is going to update with */ |
︙ | ︙ | |||
114 115 116 117 118 119 120 121 122 123 124 125 126 127 | * @param connection The connection to be used to track contacts * @param roster The roster used by the contact manager * @return An initialized XMPPContactManager */ - initWithConnection: (XMPPConnection*)connection roster: (XMPPRoster*)roster; /** * \brief Adds the specified delegate. * * \param delegate The delegate to add */ - (void)addDelegate: (id <XMPPContactManagerDelegate>)delegate; | > > > | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | * @param connection The connection to be used to track contacts * @param roster The roster used by the contact manager * @return An initialized XMPPContactManager */ - initWithConnection: (XMPPConnection*)connection roster: (XMPPRoster*)roster; - (void)sendSubscribedToJID: (XMPPJID*)subscriber; - (void)sendUnsubscribedToJID: (XMPPJID*)subscriber; /** * \brief Adds the specified delegate. * * \param delegate The delegate to add */ - (void)addDelegate: (id <XMPPContactManagerDelegate>)delegate; |
︙ | ︙ |
Modified src/XMPPContactManager.m from [bc5cb3a56e] to [0337e14b25].
︙ | ︙ | |||
54 55 56 57 58 59 60 61 62 63 64 65 66 67 | [_roster removeDelegate: self]; [_delegates release]; [_contacts release]; [super dealloc]; } - (void)addDelegate: (id <XMPPContactManagerDelegate>)delegate { [_delegates addDelegate: delegate]; } - (void)removeDelegate: (id <XMPPContactManagerDelegate>)delegate { | > > > > > > > > > > > > > > > > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | [_roster removeDelegate: self]; [_delegates release]; [_contacts release]; [super dealloc]; } - (void)sendSubscribedToJID: (XMPPJID*)subscriber { XMPPPresence *presence = [XMPPPresence presenceWithType: @"subscribed"]; [presence setTo: subscriber]; [_connection sendStanza: presence]; } - (void)sendUnsubscribedToJID: (XMPPJID*)subscriber { XMPPPresence *presence = [XMPPPresence presenceWithType: @"unsubscribed"]; [presence setTo: subscriber]; [_connection sendStanza: presence]; } - (void)addDelegate: (id <XMPPContactManagerDelegate>)delegate { [_delegates addDelegate: delegate]; } - (void)removeDelegate: (id <XMPPContactManagerDelegate>)delegate { |
︙ | ︙ | |||
141 142 143 144 145 146 147 148 | [contact XMPP_setRosterItem: rosterItem]; } } - (void)connection: (XMPPConnection*)connection didReceivePresence: (XMPPPresence*)presence { XMPPJID *JID = [presence from]; | > > | > > > > > > > > | > > | | > > > > | > | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | [contact XMPP_setRosterItem: rosterItem]; } } - (void)connection: (XMPPConnection*)connection didReceivePresence: (XMPPPresence*)presence { XMPPContact *contact; XMPPJID *JID = [presence from]; OFString *type = [presence type]; /* Subscription request */ if ([type isEqual: @"subscribe"]) { of_log(@"ObjXMPP: received subscription request"); [_delegates broadcastSelector: @selector(contactManager: didReceiveSubscriptionRequest:) withObject: self withObject: presence]; return; } contact = [_contacts objectForKey: [JID bareJID]]; if (contact == nil) return; /* Available presence */ if ([type isEqual: @"available"]) { [contact XMPP_setPresence: presence resource: [JID resource]]; [_delegates broadcastSelector: @selector(contact: didSendPresence:) withObject: contact withObject: presence]; return; } /* Unavailable presence */ if ([type isEqual: @"unavailable"]) { [contact XMPP_removePresenceForResource: [JID resource]]; [_delegates broadcastSelector: @selector(contact: didSendPresence:) withObject: contact withObject: presence]; return; } } - (void)connection: (XMPPConnection*)connection didReceiveMessage: (XMPPMessage*)message { XMPPJID *JID = [message from]; |
︙ | ︙ |