Permalink
Browse files

wenns jetz conflicted ABER DANN

  • Loading branch information...
1 parent e0104af commit 23522b1a948dd115a8be5058a5a1f32164a7e7fc Gerhard Schraml committed Jan 18, 2010
Showing with 35 additions and 6 deletions.
  1. +34 −5 Classes/SyncManager.m
  2. +1 −1 toodledo-objc
View
@@ -99,7 +99,7 @@ -(BOOL)syncWithPreference:(SyncPreference)preference error:(NSError**)error
/*
Führt eine Synchronisation durch, bei der im Falle gleicher Datensätze die lokale
Version bevorzugt wird.
-*/
+ */
-(BOOL)overwriteLocal:(NSError**)error
{
// 1. init members
@@ -183,7 +183,7 @@ -(BOOL)overwriteLocal:(NSError**)error
/*
Führt eine Synchronisation durch, bei der im Falle gleicher Datensätze die remote-
Version bevorzugt wird.
-*/
+ */
-(BOOL)overwriteRemote:(NSError**)error
{
// 1. init members
@@ -469,7 +469,7 @@ -(BOOL)syncFoldersPreferRemote
if([localFolder.remoteId integerValue] == remoteFolder.uid)
{
foundLocalEntity = YES;
-
+
localFolder.deleted = [NSNumber numberWithInteger:0]; // verhindere möglichen Löschvorgang
// überschreibe lokale Felder
localFolder.name = remoteFolder.title;
@@ -793,7 +793,7 @@ -(BOOL)syncTasksMatchDates
if([remoteTask.date_modified compare:localTask.lastLocalModification] == NSOrderedDescending || localTask.lastLocalModification == nil) // Remote aktueller als Folder
{
localTask.deleted = [NSNumber numberWithInteger:0]; // verhindere möglichen Löschvorgang
- // überschreibe lokale Felder
+ // überschreibe lokale Felder
localTask.lastSyncDate = currentDate;
localTask.name = remoteTask.title;
localTask.creationDate = remoteTask.date_created;
@@ -820,6 +820,11 @@ -(BOOL)syncTasksMatchDates
}
}
+ if(localTask.folder != nil)
+ {
+ [localTask.folder removeTasksObject:localTask];
+ localTask.folder = nil;
+ }
Folder *folder = [Folder getFolderWithRemoteId:[NSNumber numberWithInteger:remoteTask.folder] error:&syncError];
if(syncError != nil)
return NO;
@@ -828,6 +833,12 @@ -(BOOL)syncTasksMatchDates
[folder addTasksObject:localTask];
[localTask setFolder:folder];
}
+
+ if(localTask.context != nil)
+ {
+ [localTask.context removeTasksObject:localTask];
+ localTask.context = nil;
+ }
Context *context = [Context getContextWithRemoteId:[NSNumber numberWithInteger:remoteTask.context] error:&syncError];
if(syncError != nil)
return NO;
@@ -852,7 +863,7 @@ -(BOOL)syncTasksMatchDates
else
{
[usedLocalEntityVersion addObject:localTask];
-
+
}
[localTasksWithRemoteId removeObject:localTask];
foundLocalEntity = YES;
@@ -917,6 +928,24 @@ -(BOOL)syncTasksMatchDates
}
}
+ // lösche alle remote gelöschten tasks, die nach der letzten lokalen änderung gelöscht wurden
+ NSArray *deletedTasks = [tdApi getDeleted:&syncError];
+ if(syncError != nil)
+ return NO;
+ for(GtdTask *deletedTask in deletedTasks)
+ {
+ for(int i=0;i<[localTasksWithRemoteId count];i++)
+ {
+ Task *localTask = [localTasksWithRemoteId objectAtIndex:i];
+ ALog(@"local task: %@ - date local %@ - date deleted %@", localTask, localTask.lastLocalModification, deletedTask.date_deleted);
+ if(deletedTask.uid == [localTask.remoteId integerValue] && [deletedTask.date_deleted compare:localTask.lastLocalModification] == NSOrderedDescending)
+ {
+ localTask.deleted = [NSNumber numberWithBool:YES];
+ [localTasksWithRemoteId removeObject:localTask];
+ }
+ }
+ }
+
// füge nun remote gelöschte task wieder hinzu, aber nur wenn sie nicht
// auch zufällig lokal als deleted gekennzeichnet wurden
for(int i=0;i<[localTasksWithRemoteId count];i++)

0 comments on commit 23522b1

Please sign in to comment.