Implement backup import logic.

pull/1/head
Matthew Chen 7 years ago committed by Matthew Chen
parent 04c527a0f4
commit 5035cb040e

@ -61,6 +61,7 @@ typedef NS_ENUM(NSUInteger, OWSBackupState) {
// preserve our PIN and/or private key so that restored users // preserve our PIN and/or private key so that restored users
// continues to backup. // continues to backup.
- (void)tryToImportBackup; - (void)tryToImportBackup;
- (void)cancelImportBackup;
@end @end

@ -320,6 +320,18 @@ NS_ASSUME_NONNULL_BEGIN
self.backupImport = self.backupImport =
[[OWSBackupImport alloc] initWithDelegate:self primaryStorage:[OWSPrimaryStorage sharedManager]]; [[OWSBackupImport alloc] initWithDelegate:self primaryStorage:[OWSPrimaryStorage sharedManager]];
[self.backupImport startAsync]; [self.backupImport startAsync];
[self postDidChangeNotification];
}
- (void)cancelImportBackup
{
[self.backupImport cancel];
self.backupImport = nil;
_backupImportState = OWSBackupState_Idle;
[self postDidChangeNotification];
} }
#pragma mark - #pragma mark -
@ -392,12 +404,16 @@ NS_ASSUME_NONNULL_BEGIN
DDLogInfo(@"%@ %s: %@, %@", self.logTag, __PRETTY_FUNCTION__, description, progress); DDLogInfo(@"%@ %s: %@, %@", self.logTag, __PRETTY_FUNCTION__, description, progress);
BOOL didChange = !([NSObject isNullableObject:self.backupExportDescription equalTo:description] &&
[NSObject isNullableObject:self.backupExportProgress equalTo:progress]);
self.backupExportDescription = description; self.backupExportDescription = description;
self.backupExportProgress = progress; self.backupExportProgress = progress;
if (didChange) {
[self postDidChangeNotification]; [self postDidChangeNotification];
} }
}
#pragma mark - OWSBackupImportDelegate #pragma mark - OWSBackupImportDelegate
@ -447,16 +463,23 @@ NS_ASSUME_NONNULL_BEGIN
DDLogInfo(@"%@ %s: %@, %@", self.logTag, __PRETTY_FUNCTION__, description, progress); DDLogInfo(@"%@ %s: %@, %@", self.logTag, __PRETTY_FUNCTION__, description, progress);
BOOL didChange = !([NSObject isNullableObject:self.backupImportDescription equalTo:description] &&
[NSObject isNullableObject:self.backupImportProgress equalTo:progress]);
self.backupImportDescription = description; self.backupImportDescription = description;
self.backupImportProgress = progress; self.backupImportProgress = progress;
if (didChange) {
[self postDidChangeNotification]; [self postDidChangeNotification];
} }
}
#pragma mark - Notifications #pragma mark - Notifications
- (void)postDidChangeNotification - (void)postDidChangeNotification
{ {
OWSAssertIsOnMainThread();
[[NSNotificationCenter defaultCenter] postNotificationNameAsync:NSNotificationNameBackupStateDidChange [[NSNotificationCenter defaultCenter] postNotificationNameAsync:NSNotificationNameBackupStateDidChange
object:nil object:nil
userInfo:nil]; userInfo:nil];

@ -106,17 +106,11 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
{ {
@synchronized(self) @synchronized(self)
{ {
BOOL isEqual; BOOL didChange = ![NSObject isNullableObject:_avatarUrlPath equalTo:avatarUrlPath];
if (avatarUrlPath != nil) {
isEqual = [avatarUrlPath isEqual:_avatarUrlPath];
} else {
// are they both nil?
isEqual = _avatarUrlPath == nil;
}
_avatarUrlPath = avatarUrlPath; _avatarUrlPath = avatarUrlPath;
if (!isEqual) { if (didChange) {
// If the avatarURL changed, the avatarFileName can't be valid. // If the avatarURL changed, the avatarFileName can't be valid.
// Clear it. // Clear it.
self.avatarFileName = nil; self.avatarFileName = nil;

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -12,6 +12,8 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSString *)logTag; + (NSString *)logTag;
+ (BOOL)isNullableObject:(nullable NSObject *)left equalTo:(nullable NSObject *)right;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "NSObject+OWS.h" #import "NSObject+OWS.h"
@ -21,6 +21,17 @@ NS_ASSUME_NONNULL_BEGIN
return self.class.logTag; return self.class.logTag;
} }
+ (BOOL)isNullableObject:(nullable NSObject *)left equalTo:(nullable NSObject *)right
{
if (!left && !right) {
return YES;
} else if (!left || !right) {
return NO;
} else {
return [left isEqual:right];
}
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -35,6 +35,10 @@ typedef NS_ENUM(NSInteger, OWSErrorCode) {
OWSErrorCodeExportBackupFailed = 777415, OWSErrorCodeExportBackupFailed = 777415,
// A possibly recoverable error occured while exporting a backup. // A possibly recoverable error occured while exporting a backup.
OWSErrorCodeExportBackupError = 777416, OWSErrorCodeExportBackupError = 777416,
// A non-recoverable error occured while importing a backup.
OWSErrorCodeImportBackupFailed = 777417,
// A possibly recoverable error occured while importing a backup.
OWSErrorCodeImportBackupError = 777418,
}; };
extern NSString *const OWSErrorRecipientIdentifierKey; extern NSString *const OWSErrorRecipientIdentifierKey;

Loading…
Cancel
Save