Respond to CR.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent d47ddd112d
commit 723174e14e

@ -7,10 +7,10 @@ NS_ASSUME_NONNULL_BEGIN
@class TSStorageManager;
@class OWSMessageSender;
extern NSString * const kNSNotificationName_BlockedPhoneNumbersDidChange;
extern NSString *const kNSNotificationName_BlockedPhoneNumbersDidChange;
// This class can be safely accessed and used from any thread.
@interface TSBlockingManager : NSObject
@interface OWSBlockingManager : NSObject
- (instancetype)init NS_UNAVAILABLE;

@ -2,7 +2,7 @@
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "TSBlockingManager.h"
#import "OWSBlockingManager.h"
#import "OWSBlockedPhoneNumbersMessage.h"
#import "OWSMessageSender.h"
#import "TSStorageManager.h"
@ -10,14 +10,14 @@
NS_ASSUME_NONNULL_BEGIN
NSString * const kNSNotificationName_BlockedPhoneNumbersDidChange = @"kNSNotificationName_BlockedPhoneNumbersDidChange";
NSString * const kTSStorageManager_BlockedPhoneNumbersCollection = @"kTSStorageManager_BlockedPhoneNumbersCollection";
NSString *const kNSNotificationName_BlockedPhoneNumbersDidChange = @"kNSNotificationName_BlockedPhoneNumbersDidChange";
NSString *const kOWSBlockingManager_BlockedPhoneNumbersCollection = @"kOWSBlockingManager_BlockedPhoneNumbersCollection";
// This key is used to persist the current "blocked phone numbers" state.
NSString * const kTSStorageManager_BlockedPhoneNumbersKey = @"kTSStorageManager_BlockedPhoneNumbersKey";
NSString *const kOWSBlockingManager_BlockedPhoneNumbersKey = @"kOWSBlockingManager_BlockedPhoneNumbersKey";
// This key is used to persist the most recently synced "blocked phone numbers" state.
NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageManager_SyncedBlockedPhoneNumbersKey";
NSString *const kOWSBlockingManager_SyncedBlockedPhoneNumbersKey = @"kOWSBlockingManager_SyncedBlockedPhoneNumbersKey";
@interface TSBlockingManager ()
@interface OWSBlockingManager ()
@property (nonatomic, readonly) TSStorageManager *storageManager;
@property (nonatomic, readonly) OWSMessageSender *messageSender;
@ -31,11 +31,11 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
#pragma mark -
@implementation TSBlockingManager
@implementation OWSBlockingManager
+ (instancetype)sharedManager
{
static TSBlockingManager *sharedMyManager = nil;
static OWSBlockingManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] initDefault];
@ -48,11 +48,10 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
TSStorageManager *storageManager = [TSStorageManager sharedManager];
OWSMessageSender *messageSender = [TextSecureKitEnv sharedEnv].messageSender;
return [self initStorageManager:storageManager
messageSender:messageSender];
return [self initWithStorageManager:storageManager messageSender:messageSender];
}
- (instancetype)initStorageManager:(TSStorageManager *)storageManager messageSender:(OWSMessageSender *)messageSender
- (instancetype)initWithStorageManager:(TSStorageManager *)storageManager messageSender:(OWSMessageSender *)messageSender
{
self = [super init];
@ -62,7 +61,7 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
OWSAssert(storageManager);
OWSAssert(messageSender);
_storageManager = storageManager;
_messageSender = messageSender;
@ -75,38 +74,42 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
return self;
}
- (void)addBlockedPhoneNumber:(NSString *)phoneNumber {
- (void)addBlockedPhoneNumber:(NSString *)phoneNumber
{
OWSAssert(phoneNumber.length > 0);
DDLogInfo(@"%@ addBlockedPhoneNumber: %@", self.tag, phoneNumber);
@synchronized (self) {
@synchronized(self)
{
[self lazyLoadBlockedPhoneNumbersIfNecessary];
if ([_blockedPhoneNumberSet containsObject:phoneNumber]) {
// Ignore redundant changes.
return;
}
[_blockedPhoneNumberSet addObject:phoneNumber];
}
[self handleUpdate];
}
- (void)removeBlockedPhoneNumber:(NSString *)phoneNumber {
- (void)removeBlockedPhoneNumber:(NSString *)phoneNumber
{
OWSAssert(phoneNumber.length > 0);
DDLogInfo(@"%@ removeBlockedPhoneNumber: %@", self.tag, phoneNumber);
@synchronized (self) {
@synchronized(self)
{
[self lazyLoadBlockedPhoneNumbersIfNecessary];
if (![_blockedPhoneNumberSet containsObject:phoneNumber]) {
// Ignore redundant changes.
return;
}
[_blockedPhoneNumberSet removeObject:phoneNumber];
}
@ -119,22 +122,25 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
DDLogInfo(@"%@ setBlockedPhoneNumbers: %d", self.tag, (int)blockedPhoneNumbers.count);
@synchronized (self) {
@synchronized(self)
{
[self lazyLoadBlockedPhoneNumbersIfNecessary];
NSSet *newSet = [NSSet setWithArray:blockedPhoneNumbers];
if ([_blockedPhoneNumberSet isEqualToSet:newSet]) {
return;
}
_blockedPhoneNumberSet = [newSet mutableCopy];
}
[self handleUpdate:sendSyncMessage];
}
- (NSArray<NSString *> *)blockedPhoneNumbers {
@synchronized (self) {
- (NSArray<NSString *> *)blockedPhoneNumbers
{
@synchronized(self)
{
[self lazyLoadBlockedPhoneNumbersIfNecessary];
return [_blockedPhoneNumberSet.allObjects sortedArrayUsingSelector:@selector(compare:)];
@ -154,8 +160,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
NSArray<NSString *> *blockedPhoneNumbers = [self blockedPhoneNumbers];
[_storageManager setObject:blockedPhoneNumbers
forKey:kTSStorageManager_BlockedPhoneNumbersKey
inCollection:kTSStorageManager_BlockedPhoneNumbersCollection];
forKey:kOWSBlockingManager_BlockedPhoneNumbersKey
inCollection:kOWSBlockingManager_BlockedPhoneNumbersCollection];
dispatch_async(dispatch_get_main_queue(), ^{
if (sendSyncMessage) {
@ -190,15 +196,16 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
return;
}
NSArray<NSString *> *blockedPhoneNumbers = [_storageManager objectForKey:kTSStorageManager_BlockedPhoneNumbersKey
inCollection:kTSStorageManager_BlockedPhoneNumbersCollection];
NSArray<NSString *> *blockedPhoneNumbers =
[_storageManager objectForKey:kOWSBlockingManager_BlockedPhoneNumbersKey
inCollection:kOWSBlockingManager_BlockedPhoneNumbersCollection];
_blockedPhoneNumberSet = [[NSMutableSet alloc] initWithArray:(blockedPhoneNumbers ?: [NSArray new])];
// If we haven't yet successfully synced the current "blocked phone numbers" changes,
// try again to sync now.
NSArray<NSString *> *syncedBlockedPhoneNumbers =
[_storageManager objectForKey:kTSStorageManager_SyncedBlockedPhoneNumbersKey
inCollection:kTSStorageManager_BlockedPhoneNumbersCollection];
[_storageManager objectForKey:kOWSBlockingManager_SyncedBlockedPhoneNumbersKey
inCollection:kOWSBlockingManager_BlockedPhoneNumbersCollection];
NSSet *syncedBlockedPhoneNumberSet = [[NSSet alloc] initWithArray:(syncedBlockedPhoneNumbers ?: [NSArray new])];
if (![_blockedPhoneNumberSet isEqualToSet:syncedBlockedPhoneNumberSet]) {
DDLogInfo(@"%@ retrying sync of blocked phone numbers", self.tag);
@ -235,8 +242,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan
// Record the last set of "blocked phone numbers" which we successfully synced.
[_storageManager setObject:blockedPhoneNumbers
forKey:kTSStorageManager_SyncedBlockedPhoneNumbersKey
inCollection:kTSStorageManager_BlockedPhoneNumbersCollection];
forKey:kOWSBlockingManager_SyncedBlockedPhoneNumbersKey
inCollection:kOWSBlockingManager_BlockedPhoneNumbersCollection];
}
#pragma mark - Logging

@ -7,7 +7,7 @@ NS_ASSUME_NONNULL_BEGIN
@class ContactsUpdater;
@class OWSUploadingService;
@class SignalRecipient;
@class TSBlockingManager;
@class OWSBlockingManager;
@class TSInvalidIdentityKeySendingErrorMessage;
@class TSNetworkManager;
@class TSOutgoingMessage;
@ -32,7 +32,7 @@ NS_SWIFT_NAME(MessageSender)
contactsManager:(id<ContactsManagerProtocol>)contactsManager
contactsUpdater:(ContactsUpdater *)contactsUpdater;
- (void)setBlockingManager:(TSBlockingManager *)blockingManager;
- (void)setBlockingManager:(OWSBlockingManager *)blockingManager;
/**
* Send and resend text messages or resend messages with existing attachments.

@ -5,6 +5,7 @@
#import "OWSMessageSender.h"
#import "ContactsUpdater.h"
#import "NSData+messagePadding.h"
#import "OWSBlockingManager.h"
#import "OWSDevice.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSError.h"
@ -17,7 +18,6 @@
#import "SignalRecipient.h"
#import "TSAccountManager.h"
#import "TSAttachmentStream.h"
#import "TSBlockingManager.h"
#import "TSContactThread.h"
#import "TSGroupThread.h"
#import "TSIncomingMessage.h"
@ -258,7 +258,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
@property (nonatomic, readonly) TSNetworkManager *networkManager;
@property (nonatomic, readonly) TSStorageManager *storageManager;
@property (nonatomic, readonly) TSBlockingManager *blockingManager;
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
@property (nonatomic, readonly) OWSUploadingService *uploadingService;
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
@property (nonatomic, readonly) id<ContactsManagerProtocol> contactsManager;
@ -295,7 +295,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
return self;
}
- (void)setBlockingManager:(TSBlockingManager *)blockingManager
- (void)setBlockingManager:(OWSBlockingManager *)blockingManager
{
OWSAssert(blockingManager);
OWSAssert(!_blockingManager);
@ -636,13 +636,13 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
int blockedCount = 0;
for (SignalRecipient *rec in recipients) {
// We don't need to send the message to ourselves...
if ([[rec uniqueId] isEqualToString:[TSStorageManager localNumber]]) {
if ([rec.uniqueId isEqualToString:[TSStorageManager localNumber]]) {
continue;
}
// ...or to anyone on our blocklist...
OWSAssert([rec uniqueId].length > 0);
if ([blockedPhoneNumbers containsObject:[rec uniqueId]]) {
DDLogInfo(@"%@ skipping group send to blocked contact: %@", self.tag, [rec uniqueId]);
OWSAssert(rec.uniqueId.length > 0);
if ([blockedPhoneNumbers containsObject:rec.uniqueId]) {
DDLogInfo(@"%@ skipping group send to blocked contact: %@", self.tag, rec.uniqueId);
blockedCount++;
continue;
}

@ -10,6 +10,7 @@
#import "NSDate+millisecondTimeStamp.h"
#import "NotificationsProtocol.h"
#import "OWSAttachmentsProcessor.h"
#import "OWSBlockingManager.h"
#import "OWSCallMessageHandler.h"
#import "OWSDisappearingConfigurationUpdateInfoMessage.h"
#import "OWSDisappearingMessagesConfiguration.h"
@ -24,7 +25,6 @@
#import "OWSSyncGroupsMessage.h"
#import "TSAccountManager.h"
#import "TSAttachmentStream.h"
#import "TSBlockingManager.h"
#import "TSCall.h"
#import "TSContactThread.h"
#import "TSDatabaseView.h"
@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) OWSMessageSender *messageSender;
@property (nonatomic, readonly) OWSDisappearingMessagesJob *disappearingMessagesJob;
@property (nonatomic, readonly) OWSIncomingMessageFinder *incomingMessageFinder;
@property (nonatomic, readonly) TSBlockingManager *blockingManager;
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
@end
@ -104,7 +104,7 @@ NS_ASSUME_NONNULL_BEGIN
_dbConnection = storageManager.newDatabaseConnection;
_disappearingMessagesJob = [[OWSDisappearingMessagesJob alloc] initWithStorageManager:storageManager];
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithDatabase:storageManager.database];
_blockingManager = [TSBlockingManager sharedManager];
_blockingManager = [OWSBlockingManager sharedManager];
OWSSingletonAssert();
@ -158,7 +158,6 @@ NS_ASSUME_NONNULL_BEGIN
DDLogInfo(@"%@ received envelope: %@", self.tag, [self descriptionForEnvelope:envelope]);
// TODO: Can we trust envelope.source to be properly formatted?
OWSAssert(envelope.source.length > 0);
BOOL isEnvelopeBlocked = [_blockingManager.blockedPhoneNumbers containsObject:envelope.source];
if (isEnvelopeBlocked) {

Loading…
Cancel
Save