}
#pragma mark -
+#pragma mark Internal
+
+- (void)updateGroups {
+ if (!pithosAccount) {
+ self.translatedGroups = [NSMutableDictionary dictionary];
+ } else if (pithosAccountManager) {
+ NSMutableSet *UUIDs = [NSMutableSet set];
+ for (NSString *groupName in pithosAccount.groups) {
+ [UUIDs addObjectsFromArray:[pithosAccount.groups objectForKey:groupName]];
+ }
+ [UUIDs removeObject:@""];
+ [UUIDs removeObject:@"*"];
+ if (UUIDs.count) {
+ [pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:[UUIDs allObjects]];
+ }
+
+ NSMutableDictionary *newTranslatedGroups = [NSMutableDictionary dictionaryWithCapacity:pithosAccount.groups.count];
+ for (NSString *groupName in pithosAccount.groups) {
+ NSMutableArray *groupUsers = [NSMutableArray array];
+ for (NSString *UUID in [pithosAccount.groups objectForKey:groupName]) {
+ [groupUsers addObject:[pithosAccountManager displaynameForUUID:UUID safe:YES]];
+ }
+ [newTranslatedGroups setObject:groupUsers forKey:groupName];
+ }
+ self.translatedGroups = newTranslatedGroups;
+ } else {
+ self.translatedGroups = [pithosAccount.groups copy];
+ }
+}
+
+#pragma mark -
#pragma mark Properties
- (void)setPithos:(ASIPithos *)aPithos {
}
- (void)setPithosAccount:(ASIPithosAccount *)aPithosAccount {
- if (!aPithosAccount) {
+ if (![pithosAccount isEqualTo:aPithosAccount]) {
pithosAccount = aPithosAccount;
- self.translatedGroups = [NSMutableDictionary dictionary];
- } else if (![aPithosAccount isEqualTo:pithosAccount]) {
- pithosAccount = aPithosAccount;
- if (pithosAccountManager) {
- NSMutableArray *UUIDs = [NSMutableArray array];
- for (NSString *groupName in pithosAccount.groups) {
- [UUIDs addObjectsFromArray:[pithosAccount.groups objectForKey:groupName]];
- }
- if (UUIDs.count) {
- [pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:UUIDs];
- }
-
- NSMutableDictionary *newTranslatedGroups = [NSMutableDictionary dictionaryWithCapacity:pithosAccount.groups.count];
- for (NSString *groupName in pithosAccount.groups) {
- NSMutableArray *groupUsers = [NSMutableArray array];
- for (NSString *UUID in [pithosAccount.groups objectForKey:groupName]) {
- [groupUsers addObject:[pithosAccountManager displaynameForUUID:UUID safe:YES]];
- }
- [newTranslatedGroups setObject:groupUsers forKey:groupName];
- }
- self.translatedGroups = newTranslatedGroups;
- } else {
- self.translatedGroups = [pithosAccount.groups copy];
- }
+ [self updateGroups];
}
}
}
}
if (!inexistentGroupUsers.count) {
- // create groups
+ // Create groups.
for (NSString *groupName in translatedGroups) {
NSMutableArray *groupUsers = [NSMutableArray array];
for (NSString *groupUser in [translatedGroups objectForKey:groupName]) {
}
}
} else {
- [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
+ for (NSString *groupName in translatedGroups) {
+ if ([[translatedGroups objectForKey:groupName] containsObject:@"*"]) {
+ [groups setObject:[NSMutableArray arrayWithObject:@"*"] forKey:groupName];
+ }
+ }
+ if (!groups.count) {
+ [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
+ }
}
} else {
[groups addEntriesFromDictionary:translatedGroups];