Track and persist 'is de-registered' state.

This commit is contained in:
Matthew Chen 2018-06-15 12:52:45 -04:00
parent 985f735f1a
commit b0646e8bff
2 changed files with 23 additions and 11 deletions

View file

@ -25,6 +25,7 @@
#import <SignalServiceKit/OWSBlockingManager.h> #import <SignalServiceKit/OWSBlockingManager.h>
#import <SignalServiceKit/OWSMessageSender.h> #import <SignalServiceKit/OWSMessageSender.h>
#import <SignalServiceKit/OWSMessageUtils.h> #import <SignalServiceKit/OWSMessageUtils.h>
#import <SignalServiceKit/TSAccountManager.h>
#import <SignalServiceKit/TSOutgoingMessage.h> #import <SignalServiceKit/TSOutgoingMessage.h>
#import <SignalServiceKit/Threading.h> #import <SignalServiceKit/Threading.h>
#import <YapDatabase/YapDatabase.h> #import <YapDatabase/YapDatabase.h>
@ -159,6 +160,10 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
selector:@selector(yapDatabaseModifiedExternally:) selector:@selector(yapDatabaseModifiedExternally:)
name:YapDatabaseModifiedExternallyNotification name:YapDatabaseModifiedExternallyNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deregistrationStateDidChange:)
name:DeregistrationStateDidChangeNotification
object:nil];
} }
- (void)dealloc - (void)dealloc
@ -184,6 +189,13 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
[self reloadTableViewData]; [self reloadTableViewData];
} }
- (void)deregistrationStateDidChange:(id)notification
{
OWSAssertIsOnMainThread();
[self reloadTableViewData];
}
#pragma mark - View Life Cycle #pragma mark - View Life Cycle
- (void)loadView - (void)loadView

View file

@ -16,6 +16,7 @@
#import "TSPreKeyManager.h" #import "TSPreKeyManager.h"
#import "TSVerifyCodeRequest.h" #import "TSVerifyCodeRequest.h"
#import "YapDatabaseConnection+OWS.h" #import "YapDatabaseConnection+OWS.h"
#import "YapDatabaseTransaction+OWS.h"
#import <YapDatabase/YapDatabase.h> #import <YapDatabase/YapDatabase.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -541,29 +542,28 @@ NSString *const TSAccountManager_ServerSignalingKey = @"TSStorageServerSignaling
inCollection:TSAccountManager_UserAccountCollection inCollection:TSAccountManager_UserAccountCollection
defaultValue:NO]); defaultValue:NO]);
} }
}
OWSAssert(self.cachedIsDeregistered); OWSAssert(self.cachedIsDeregistered);
return self.cachedIsDeregistered.boolValue; return self.cachedIsDeregistered.boolValue;
}
} }
- (void)setIsDeregistered:(BOOL)isDeregistered - (void)setIsDeregistered:(BOOL)isDeregistered
{ {
@synchronized(self) { @synchronized(self) {
if (self.cachedIsDeregistered && self.cachedIsDeregistered.boolValue == isDeregistered)) if (self.cachedIsDeregistered && self.cachedIsDeregistered.boolValue == isDeregistered) {
{ return;
return; }
}
DDLogWarn(@"%@ isDeregistered: %d", self.logTag, isDeregistered); DDLogWarn(@"%@ isDeregistered: %d", self.logTag, isDeregistered);
self.cachedIsDeregistered == @(isDeregistered); self.cachedIsDeregistered = @(isDeregistered);
} }
[self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[transaction setValue:@(isDeregistered) [transaction setObject:@(isDeregistered)
forKey:TSAccountManager_IsDeregisteredKey forKey:TSAccountManager_IsDeregisteredKey
inCollection:TSAccountManager_UserAccountCollection]; inCollection:TSAccountManager_UserAccountCollection];
}]; }];
[[NSNotificationCenter defaultCenter] postNotificationNameAsync:DeregistrationStateDidChangeNotification [[NSNotificationCenter defaultCenter] postNotificationNameAsync:DeregistrationStateDidChangeNotification