diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 8a99a587c..ac55ac17f 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.0.1 + 2.0.10 LOGS_EMAIL support@whispersystems.org LOGS_URL diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 5757108f4..1f6ebcadc 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -21,7 +21,7 @@ #import "UIColor+OWS.h" #import "CodeVerificationViewController.h" #import "MIMETypeUtil.h" - +#import "TSDatabaseView.h" #import #define kSignalVersionKey @"SignalUpdateVersionKey" @@ -49,22 +49,33 @@ static NSString* const kCallSegue = @"2.0_6.0_Call_Segue"; - (void)performUpdateCheck{ NSString *previousVersion = Environment.preferences.lastRanVersion; NSString *currentVersion = [Environment.preferences setAndGetCurrentVersion]; + // TODO: remove if (!previousVersion) { DDLogError(@"No previous version found. Possibly first launch since install."); [Environment resetAppData]; // We clean previous keychain entries in case their are some entries remaining. } - else if ([Environment.preferences getIsMigratingToVersion2Dot0] || [currentVersion compare:previousVersion options:NSNumericSearch] == NSOrderedDescending){ - if([self isVersion:previousVersion atLeast:@"1.0.2"]) { - [VersionMigrations migrateFrom1Dot0Dot2ToVersion2Dot0]; // this is only necessary for older apps + else if(([self isVersion:previousVersion atLeast:@"1.0.2" andLessThan:@"2.0"]) || [Environment.preferences getIsMigratingToVersion2Dot0] ) { + [VersionMigrations migrateFrom1Dot0Dot2ToVersion2Dot0]; } + else if([self isVersion:previousVersion atLeast:@"2.0" andLessThan:@"2.0.10"]){ + [VersionMigrations migrateFrom2Dot0BetaTo2Dot0Dot10]; } } + +-(BOOL) isVersion:(NSString *)thisVersionString atLeast:(NSString *)openLowerBoundVersionString andLessThan:(NSString *)closedUpperBoundVersionString { + return [self isVersion:thisVersionString atLeast:openLowerBoundVersionString] && [self isVersion:thisVersionString lessThan:closedUpperBoundVersionString]; +} + - (BOOL) isVersion:(NSString *)thisVersionString atLeast:(NSString *)thatVersionString { return [thisVersionString compare:thatVersionString options:NSNumericSearch] != NSOrderedAscending; } +- (BOOL) isVersion:(NSString *)thisVersionString lessThan:(NSString *)thatVersionString { + return [thisVersionString compare:thatVersionString options:NSNumericSearch] == NSOrderedAscending; +} + - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { BOOL loggingIsEnabled; [self setupAppearance]; @@ -90,13 +101,15 @@ static NSString* const kCallSegue = @"2.0_6.0_Call_Segue"; self.notificationTracker = [NotificationTracker notificationTracker]; - [self performUpdateCheck]; CategorizingLogger* logger = [CategorizingLogger categorizingLogger]; [logger addLoggingCallback:^(NSString *category, id details, NSUInteger index) {}]; [Environment setCurrent:[Release releaseEnvironmentWithLogging:logger]]; [Environment.getCurrent.phoneDirectoryManager startUntilCancelled:nil]; [Environment.getCurrent.contactsManager doAfterEnvironmentInitSetup]; + [self performUpdateCheck]; // this call must be made after environment has been initialized because in general upgrade may depend on environment + + //Accept push notification when app is not open NSDictionary *remoteNotif = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; if (remoteNotif) { diff --git a/Signal/src/environment/VersionMigrations.h b/Signal/src/environment/VersionMigrations.h index 9d002033d..eac9062b3 100644 --- a/Signal/src/environment/VersionMigrations.h +++ b/Signal/src/environment/VersionMigrations.h @@ -14,5 +14,6 @@ + (void)migrateFrom1Dot0Dot2ToGreater; + (void)migrateFrom1Dot0Dot2ToVersion2Dot0; ++ (void)migrateFrom2Dot0BetaTo2Dot0Dot10; @end diff --git a/Signal/src/environment/VersionMigrations.m b/Signal/src/environment/VersionMigrations.m index 3054f8757..d67a1a0e2 100644 --- a/Signal/src/environment/VersionMigrations.m +++ b/Signal/src/environment/VersionMigrations.m @@ -16,6 +16,8 @@ #import "RecentCallManager.h" #import "SignalKeyingStorage.h" #import "UICKeyChainStore.h" +#import "TSStorageManager.h" +#import "TSDatabaseView.h" @interface SignalKeyingStorage(VersionMigrations) @@ -46,6 +48,10 @@ } ++ (void)migrateFrom2Dot0BetaTo2Dot0Dot10 { + [[TSStorageManager sharedManager] deleteThreadsAndMessages]; +} + + (void)migrateFrom1Dot0Dot2ToGreater { // Preferences were stored in both a preference file and a plist in the documents folder, as a temporary measure, we are going to move all the preferences to the NSUserDefaults preference store, those will be migrated to a SQLCipher-backed database diff --git a/Signal/src/textsecure/Storage/AxolotlStore/TSStorageManager+SessionStore.m b/Signal/src/textsecure/Storage/AxolotlStore/TSStorageManager+SessionStore.m index 7814e5f4e..713d2f6a5 100644 --- a/Signal/src/textsecure/Storage/AxolotlStore/TSStorageManager+SessionStore.m +++ b/Signal/src/textsecure/Storage/AxolotlStore/TSStorageManager+SessionStore.m @@ -82,6 +82,7 @@ inCollection:TSStorageManagerSessionStoreCollection]; } + - (NSNumber*)keyForInt:(int)number { return [NSNumber numberWithInt:number]; } diff --git a/Signal/src/textsecure/Storage/TSDatabaseView.h b/Signal/src/textsecure/Storage/TSDatabaseView.h index 7868e3e01..4241bb880 100644 --- a/Signal/src/textsecure/Storage/TSDatabaseView.h +++ b/Signal/src/textsecure/Storage/TSDatabaseView.h @@ -22,4 +22,5 @@ extern NSString *TSUnreadDatabaseViewExtensionName; + (BOOL)registerBuddyConversationDatabaseView; + (BOOL)registerUnreadDatabaseView; + @end diff --git a/Signal/src/textsecure/Storage/TSDatabaseView.m b/Signal/src/textsecure/Storage/TSDatabaseView.m index 2c9289261..ec69dfcd9 100644 --- a/Signal/src/textsecure/Storage/TSDatabaseView.m +++ b/Signal/src/textsecure/Storage/TSDatabaseView.m @@ -28,7 +28,6 @@ NSString *TSUnreadDatabaseViewExtensionName = @"TSUnreadDatabaseViewExtensionNa @implementation TSDatabaseView + (BOOL)registerUnreadDatabaseView { - YapDatabaseView *unreadView = [[TSStorageManager sharedManager].database registeredExtension:TSUnreadDatabaseViewExtensionName]; if (unreadView) { return YES; diff --git a/Signal/src/textsecure/Storage/TSStorageManager.m b/Signal/src/textsecure/Storage/TSStorageManager.m index 099315965..c181ed690 100644 --- a/Signal/src/textsecure/Storage/TSStorageManager.m +++ b/Signal/src/textsecure/Storage/TSStorageManager.m @@ -80,6 +80,8 @@ static NSString * keychainDBPassAccount = @"TSDatabasePass"; [self.database registerExtension:[[YapDatabaseRelationship alloc] init] withName:@"TSRelationships"]; } + + - (void)protectSignalFiles{ [self protectFolderAtPath:[TSAttachmentStream attachmentsFolder]]; [self protectFolderAtPath:[self dbPath]]; diff --git a/Signal/src/view controllers/UITests/SignalsViewController.m b/Signal/src/view controllers/UITests/SignalsViewController.m index 9e6db5e1e..b901f2ce1 100644 --- a/Signal/src/view controllers/UITests/SignalsViewController.m +++ b/Signal/src/view controllers/UITests/SignalsViewController.m @@ -21,7 +21,7 @@ #import "TSContactThread.h" #import "TSMessagesManager+sendMessages.h" #import "UIImage+normalizeImage.h" - +#import "PreferencesUtil.h" #import "NSDate+millisecondTimeStamp.h" #import @@ -88,7 +88,7 @@ static NSString* const kShowSignupFlowSegue = @"showSignupFlow"; - (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; - if (![TSAccountManager isRegistered]){ + if (![TSAccountManager isRegistered] && ![Environment.preferences getIsMigratingToVersion2Dot0]){ [self performSegueWithIdentifier:kShowSignupFlowSegue sender:self]; } }