X-Git-Url: https://code.grnet.gr/git/pithos-macos/blobdiff_plain/b83af7823f40a2a25fa369490ca67e892c920ce4..ea506e4bf18ffa9e0a592ac0207f43b9e669297f:/pithos-macos/PithosAccount.m diff --git a/pithos-macos/PithosAccount.m b/pithos-macos/PithosAccount.m index 5329bcd..fe5ca8d 100644 --- a/pithos-macos/PithosAccount.m +++ b/pithos-macos/PithosAccount.m @@ -49,7 +49,7 @@ @end @implementation PithosAccount -@synthesize uniqueName, active, name; +@synthesize uniqueName, active, name, clientVersion; @synthesize syncActive, syncDirectoryPath, syncAccountsDictionary, syncSkipHidden, syncLastCompleted, syncDaemon; @synthesize serverURL, versionResource, loginResource, publicResource, userCatalogResource; @synthesize authUser, authToken, storageURLPrefix, authURL, loginURLPrefix, publicURLPrefix, userCatalogURL, userCatalog; @@ -61,14 +61,15 @@ + (id)pithosAccount { PithosAccount *pithosAccount = [[self alloc] init]; pithosAccount.uniqueName = [NSString stringWithFormat:@"pithosAccount-%f", [NSDate timeIntervalSinceReferenceDate]]; + pithosAccount.clientVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; pithosAccount.syncSkipHidden = YES; return pithosAccount; } - (NSString *)description { - return [NSString stringWithFormat:@"uniqueName: %@, active: %d, name: %@, syncActive: %d, syncDirectoryPath: %@, syncAccountsDictionary: %@, syncSkipHidden: %d, syncLastCompleted: %@, serverURL: %@, versionResource: %@, loginResource: %@, publicResource: %@, userCatalogResource: %@, authUser: %@, authToken: %@, storageURLPrefix: %@, authURL: %@, loginURLPrefix: %@, publicURLPrefix: %@, userCatalogResource: %@", - uniqueName, active, name, syncActive, syncDirectoryPath, syncAccountsDictionary, syncSkipHidden, syncLastCompleted, serverURL, versionResource, loginResource, publicResource, userCatalogResource, authUser, authToken, storageURLPrefix, authURL, loginURLPrefix, publicURLPrefix, userCatalogResource]; + return [NSString stringWithFormat:@"uniqueName: %@, active: %d, name: %@, clientVersion: %@, syncActive: %d, syncDirectoryPath: %@, syncAccountsDictionary: %@, syncSkipHidden: %d, syncLastCompleted: %@, serverURL: %@, versionResource: %@, loginResource: %@, publicResource: %@, userCatalogResource: %@, authUser: %@, authToken: %@, storageURLPrefix: %@, authURL: %@, loginURLPrefix: %@, publicURLPrefix: %@, userCatalogResource: %@", + uniqueName, active, name, clientVersion, syncActive, syncDirectoryPath, syncAccountsDictionary, syncSkipHidden, syncLastCompleted, serverURL, versionResource, loginResource, publicResource, userCatalogResource, authUser, authToken, storageURLPrefix, authURL, loginURLPrefix, publicURLPrefix, userCatalogResource]; } #pragma mark - @@ -372,6 +373,7 @@ sharingAccountsNode = [[PithosSharingAccountsNode alloc] initWithPithos:self.pithos]; sharingAccountsNode.childrenUpdatedNotificationName = nil; sharingAccountsNode.inheritChildrenUpdatedNotificationName = YES; + sharingAccountsNode.pithosAccountManager = self; } return sharingAccountsNode; } @@ -487,6 +489,7 @@ self.uniqueName = [decoder decodeObjectForKey:@"uniqueName"]; self.active = [decoder decodeBoolForKey:@"active"]; name = [decoder decodeObjectForKey:@"name"]; + self.clientVersion = [decoder decodeObjectForKey:@"clientVersion"]; self.syncActive = [decoder decodeBoolForKey:@"syncActive"]; self.syncDirectoryPath = [decoder decodeObjectForKey:@"syncDirectoryPath"]; @@ -512,7 +515,13 @@ if (![authUser length] || ![authToken length] || ![self.storageURLPrefix length]) self.active = NO; - resetSyncDaemonLocalState = NO; + NSString *currentVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; + if (!clientVersion || ![clientVersion isEqualToString:currentVersion]) { + resetSyncDaemonLocalState = YES; + self.clientVersion = currentVersion; + } else { + resetSyncDaemonLocalState = NO; + } } return self; } @@ -521,6 +530,7 @@ [encoder encodeObject:uniqueName forKey:@"uniqueName"]; [encoder encodeBool:active forKey:@"active"]; [encoder encodeObject:name forKey:@"name"]; + [encoder encodeObject:clientVersion forKey:@"clientVersion"]; [encoder encodeBool:syncActive forKey:@"syncActive"]; [encoder encodeObject:syncDirectoryPath forKey:@"syncDirectoryPath"];