16
16
@interface XMPPRoomLight () {
17
17
NSString *roomname;
18
18
NSString *subject;
19
+ NSArray <NSXMLElement *> *knownMembersList;
19
20
NSString *configVersion;
20
21
NSString *memberListVersion;
21
22
}
@@ -41,6 +42,7 @@ - (nonnull instancetype)initWithRoomLightStorage:(nullable id <XMPPRoomLightStor
41
42
_domain = aRoomJID.domain ;
42
43
_roomJID = aRoomJID;
43
44
roomname = aRoomname;
45
+ knownMembersList = @[];
44
46
configVersion = @" " ;
45
47
memberListVersion = @" " ;
46
48
}
@@ -87,6 +89,20 @@ - (nonnull NSString *)subject {
87
89
}
88
90
}
89
91
92
+ - (NSArray <NSXMLElement *> *)knownMembersList {
93
+ __block NSArray <NSXMLElement *> *result;
94
+ dispatch_block_t block = ^{ @autoreleasepool {
95
+ result = knownMembersList;
96
+ }};
97
+
98
+ if (dispatch_get_specific (moduleQueueTag))
99
+ block ();
100
+ else
101
+ dispatch_sync (moduleQueue, block);
102
+
103
+ return result;
104
+ }
105
+
90
106
- (nonnull NSString *)configVersion {
91
107
@synchronized (subject) {
92
108
return [configVersion copy ];
@@ -131,6 +147,17 @@ - (void)setSubject:(NSString *)aSubject{
131
147
dispatch_async (moduleQueue, block);
132
148
}
133
149
150
+ - (void )setKnownMembersList : (NSArray <NSXMLElement *> *)aMembersList {
151
+ dispatch_block_t block = ^{ @autoreleasepool {
152
+ knownMembersList = [aMembersList copy ];
153
+ }};
154
+
155
+ if (dispatch_get_specific (moduleQueueTag))
156
+ block ();
157
+ else
158
+ dispatch_async (moduleQueue, block);
159
+ }
160
+
134
161
- (void )setMemberListVersion : (NSString *)aVersion {
135
162
dispatch_block_t block = ^{ @autoreleasepool {
136
163
memberListVersion = aVersion;
@@ -368,9 +395,11 @@ - (void)handleFetchMembersListResponse:(XMPPIQ *)iq withInfo:(id <XMPPTrackingIn
368
395
}
369
396
370
397
NSArray *items = [query elementsForName: @" user" ];
371
- if (!items) { items = @[]; }
398
+ if (items) {
399
+ [self setKnownMembersList: items];
400
+ }
372
401
373
- [multicastDelegate xmppRoomLight: self didFetchMembersList: items ];
402
+ [multicastDelegate xmppRoomLight: self didFetchMembersList: iq ];
374
403
}else {
375
404
[multicastDelegate xmppRoomLight: self didFailToFetchMembersList: iq];
376
405
}
0 commit comments