|
16 | 16 | @interface XMPPRoomLight() {
|
17 | 17 | NSString *roomname;
|
18 | 18 | NSString *subject;
|
| 19 | + NSString *version; |
19 | 20 | }
|
20 | 21 | @end
|
21 | 22 |
|
@@ -82,6 +83,12 @@ - (nonnull NSString *)subject {
|
82 | 83 | }
|
83 | 84 | }
|
84 | 85 |
|
| 86 | +- (nonnull NSString *)version { |
| 87 | + @synchronized(subject) { |
| 88 | + return [version copy]; |
| 89 | + } |
| 90 | +} |
| 91 | + |
85 | 92 | - (void)handleConfigElements:(NSArray<NSXMLElement*> *)configElements{
|
86 | 93 | for (NSXMLElement *element in configElements) {
|
87 | 94 | if([element.name isEqualToString:@"subject"]){
|
@@ -114,6 +121,17 @@ - (void)setSubject:(NSString *)aSubject{
|
114 | 121 | dispatch_async(moduleQueue, block);
|
115 | 122 | }
|
116 | 123 |
|
| 124 | +- (void)setVersion:(NSString *)aVersion{ |
| 125 | + dispatch_block_t block = ^{ @autoreleasepool { |
| 126 | + version = aVersion; |
| 127 | + }}; |
| 128 | + |
| 129 | + if (dispatch_get_specific(moduleQueueTag)) |
| 130 | + block(); |
| 131 | + else |
| 132 | + dispatch_async(moduleQueue, block); |
| 133 | +} |
| 134 | + |
117 | 135 | - (void)createRoomLightWithMembersJID:(nullable NSArray<XMPPJID *> *) members{
|
118 | 136 |
|
119 | 137 | // <iq from='[email protected]/desktop'
|
@@ -295,6 +313,7 @@ - (void)fetchMembersList{
|
295 | 313 | NSString *iqID = [XMPPStream generateUUID];
|
296 | 314 | XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:_roomJID elementID:iqID];
|
297 | 315 | NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:XMPPRoomLightAffiliations];
|
| 316 | + [query addChild:[NSXMLElement elementWithName:@"version" stringValue:self.version]]; |
298 | 317 | [iq addChild:query];
|
299 | 318 |
|
300 | 319 | [responseTracker addID:iqID
|
@@ -455,7 +474,7 @@ - (void)getConfiguration {
|
455 | 474 | NSString *iqID = [XMPPStream generateUUID];
|
456 | 475 | XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:_roomJID elementID:iqID];
|
457 | 476 | NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:XMPPRoomLightConfiguration];
|
458 |
| - |
| 477 | + [query addChild:[NSXMLElement elementWithName:@"version" stringValue:self.version]]; |
459 | 478 | [iq addChild:query];
|
460 | 479 |
|
461 | 480 | [responseTracker addID:iqID
|
@@ -527,12 +546,17 @@ - (void)handleSetConfiguration:(XMPPIQ *)iq withInfo:(id <XMPPTrackingInfo>)info
|
527 | 546 |
|
528 | 547 | - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
|
529 | 548 | NSString *type = [iq type];
|
530 |
| - |
531 |
| - if ([type isEqualToString:@"result"] || [type isEqualToString:@"error"]) |
532 |
| - { |
| 549 | + |
| 550 | + NSXMLElement *query = [iq elementForName:@"query"]; |
| 551 | + NSXMLElement *version = [query elementForName:@"version"]; |
| 552 | + if(version){ |
| 553 | + [self setVersion:version.stringValue]; |
| 554 | + } |
| 555 | + |
| 556 | + if ([type isEqualToString:@"result"] || [type isEqualToString:@"error"]){ |
533 | 557 | return [responseTracker invokeForID:[iq elementID] withObject:iq];
|
534 | 558 | }
|
535 |
| - |
| 559 | + |
536 | 560 | return NO;
|
537 | 561 | }
|
538 | 562 |
|
|
0 commit comments