Skip to content

Commit

Permalink
(fix) don't include task folders over EAS if we are hiding them (fixe…
Browse files Browse the repository at this point in the history
…s #4164)
  • Loading branch information
extrafu committed Jun 15, 2017
1 parent 5b70632 commit a5a40b2
Showing 1 changed file with 37 additions and 30 deletions.
67 changes: 37 additions & 30 deletions ActiveSync/SOGoActiveSyncDispatcher.m
Expand Up @@ -1177,38 +1177,45 @@ - (void) processFolderSync: (id <DOMElement>) theDocumentElement

name = [NSString stringWithFormat: @"vtodo/%@", [[folders objectAtIndex:fi] nameInContainer]];
type = ([[[folders objectAtIndex:fi] nameInContainer] isEqualToString: personalFolderName] ? 7 : 15);
[commands appendFormat: @"<%@><ServerId>%@</ServerId><ParentId>%@</ParentId><DisplayName>%@</DisplayName><Type>%d</Type></%@>", operation,
[name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation];

command_count++;
key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name];
// We always sync the "Default Tasks folder" (7). For "User-created Tasks folder" (15), we check if we include it in
// the sync process by checking if "Show tasks" is enabled. If not, we skip the folder entirely.
if (type == 7 ||
(type == 15 && [[folders objectAtIndex: fi] showCalendarTasks]))
{
[commands appendFormat: @"<%@><ServerId>%@</ServerId><ParentId>%@</ParentId><DisplayName>%@</DisplayName><Type>%d</Type></%@>", operation,
[name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation];

o = [SOGoCacheGCSObject objectWithName: key inContainer: nil];
[o setObjectType: ActiveSyncFolderCacheObject];
[o setTableUrl: [self folderTableURL]];
[o reloadIfNeeded];
[[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"];
command_count++;

if ([operation isEqualToString: @"Add"])
{
// clean cache content to avoid stale data
[[o properties] removeObjectForKey: @"SyncKey"];
[[o properties] removeObjectForKey: @"SyncCache"];
[[o properties] removeObjectForKey: @"DateCache"];
[[o properties] removeObjectForKey: @"UidCache"];
[[o properties] removeObjectForKey: @"MoreAvailable"];
[[o properties] removeObjectForKey: @"BodyPreferenceType"];
[[o properties] removeObjectForKey: @"SupportedElements"];
[[o properties] removeObjectForKey: @"SuccessfulMoveItemsOps"];
[[o properties] removeObjectForKey: @"InitialLoadSequence"];
[[o properties] removeObjectForKey: @"FirstIdInCache"];
[[o properties] removeObjectForKey: @"LastIdInCache"];
[[o properties] removeObjectForKey: @"MergedFoldersSyncKeys"];
[[o properties] removeObjectForKey: @"MergedFolder"];
[[o properties] removeObjectForKey: @"CleanoutDate"];
}
key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name];
o = [SOGoCacheGCSObject objectWithName: key inContainer: nil];
[o setObjectType: ActiveSyncFolderCacheObject];
[o setTableUrl: [self folderTableURL]];
[o reloadIfNeeded];
[[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"];

[o save];
if ([operation isEqualToString: @"Add"])
{
// clean cache content to avoid stale data
[[o properties] removeObjectForKey: @"SyncKey"];
[[o properties] removeObjectForKey: @"SyncCache"];
[[o properties] removeObjectForKey: @"DateCache"];
[[o properties] removeObjectForKey: @"UidCache"];
[[o properties] removeObjectForKey: @"MoreAvailable"];
[[o properties] removeObjectForKey: @"BodyPreferenceType"];
[[o properties] removeObjectForKey: @"SupportedElements"];
[[o properties] removeObjectForKey: @"SuccessfulMoveItemsOps"];
[[o properties] removeObjectForKey: @"InitialLoadSequence"];
[[o properties] removeObjectForKey: @"FirstIdInCache"];
[[o properties] removeObjectForKey: @"LastIdInCache"];
[[o properties] removeObjectForKey: @"MergedFoldersSyncKeys"];
[[o properties] removeObjectForKey: @"MergedFolder"];
[[o properties] removeObjectForKey: @"CleanoutDate"];
}

[o save];
}
}
else if ([[folders objectAtIndex:fi] isKindOfClass: [SOGoContactGCSFolder class]])
{
Expand Down Expand Up @@ -1241,8 +1248,8 @@ - (void) processFolderSync: (id <DOMElement>) theDocumentElement

[o save];
}
}
}
} // if (operation)
} // for (fi = 0; fi <= count ; fi++)


// set a new syncKey if there are folder changes
Expand Down

0 comments on commit a5a40b2

Please sign in to comment.