2017-07-28 17:13:55 +02:00
|
|
|
//
|
|
|
|
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import "DebugUIMisc.h"
|
|
|
|
#import "Environment.h"
|
|
|
|
#import "OWSCountryMetadata.h"
|
|
|
|
#import "OWSTableViewController.h"
|
|
|
|
#import "Signal-Swift.h"
|
|
|
|
#import "ThreadUtil.h"
|
|
|
|
#import <AFNetworking/AFNetworking.h>
|
|
|
|
#import <AxolotlKit/PreKeyBundle.h>
|
|
|
|
#import <SignalServiceKit/OWSDisappearingConfigurationUpdateInfoMessage.h>
|
|
|
|
#import <SignalServiceKit/OWSDisappearingMessagesConfiguration.h>
|
|
|
|
#import <SignalServiceKit/OWSVerificationStateChangeMessage.h>
|
2017-07-31 20:48:43 +02:00
|
|
|
#import <SignalServiceKit/SecurityUtils.h>
|
2017-07-28 17:13:55 +02:00
|
|
|
#import <SignalServiceKit/TSCall.h>
|
|
|
|
#import <SignalServiceKit/TSInvalidIdentityKeyReceivingErrorMessage.h>
|
|
|
|
#import <SignalServiceKit/TSStorageManager+SessionStore.h>
|
|
|
|
#import <SignalServiceKit/TSThread.h>
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
@implementation DebugUIMisc
|
|
|
|
|
|
|
|
#pragma mark - Logging
|
|
|
|
|
|
|
|
+ (NSString *)tag
|
|
|
|
{
|
|
|
|
return [NSString stringWithFormat:@"[%@]", self.class];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSString *)tag
|
|
|
|
{
|
|
|
|
return self.class.tag;
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark - Factory Methods
|
|
|
|
|
|
|
|
- (NSString *)name
|
|
|
|
{
|
|
|
|
return @"Misc.";
|
|
|
|
}
|
|
|
|
|
|
|
|
- (nullable OWSTableSection *)sectionForThread:(nullable TSThread *)thread
|
|
|
|
{
|
|
|
|
NSMutableArray<OWSTableItem *> *items = [NSMutableArray new];
|
|
|
|
[items addObject:[OWSTableItem itemWithTitle:@"Enable Manual Censorship Circumvention"
|
|
|
|
actionBlock:^{
|
|
|
|
[DebugUIMisc setManualCensorshipCircumventionEnabled:YES];
|
|
|
|
}]];
|
|
|
|
[items addObject:[OWSTableItem itemWithTitle:@"Disable Manual Censorship Circumvention"
|
|
|
|
actionBlock:^{
|
|
|
|
[DebugUIMisc setManualCensorshipCircumventionEnabled:NO];
|
|
|
|
}]];
|
2017-09-02 00:08:31 +02:00
|
|
|
[items addObject:[OWSTableItem itemWithTitle:@"Clear experience upgrades (works once per launch)"
|
|
|
|
actionBlock:^{
|
|
|
|
[ExperienceUpgrade removeAllObjectsInCollection];
|
|
|
|
}]];
|
2017-08-18 20:38:08 +02:00
|
|
|
[items addObject:[OWSTableItem itemWithTitle:@"Clear hasDismissedOffers"
|
|
|
|
actionBlock:^{
|
|
|
|
[DebugUIMisc clearHasDismissedOffers];
|
|
|
|
}]];
|
2017-07-28 17:13:55 +02:00
|
|
|
return [OWSTableSection sectionWithTitle:self.name items:items];
|
|
|
|
}
|
|
|
|
|
|
|
|
+ (void)setManualCensorshipCircumventionEnabled:(BOOL)isEnabled
|
|
|
|
{
|
|
|
|
OWSCountryMetadata *countryMetadata = nil;
|
|
|
|
NSString *countryCode = OWSSignalService.sharedInstance.manualCensorshipCircumventionCountryCode;
|
|
|
|
if (countryCode) {
|
|
|
|
countryMetadata = [OWSCountryMetadata countryMetadataForCountryCode:countryCode];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!countryMetadata) {
|
|
|
|
countryCode = [NSLocale.currentLocale objectForKey:NSLocaleCountryCode];
|
|
|
|
if (countryCode) {
|
|
|
|
countryMetadata = [OWSCountryMetadata countryMetadataForCountryCode:countryCode];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!countryMetadata) {
|
|
|
|
countryCode = @"US";
|
|
|
|
countryMetadata = [OWSCountryMetadata countryMetadataForCountryCode:countryCode];
|
|
|
|
}
|
|
|
|
|
|
|
|
OWSAssert(countryMetadata);
|
|
|
|
OWSSignalService.sharedInstance.manualCensorshipCircumventionCountryCode = countryCode;
|
|
|
|
OWSSignalService.sharedInstance.manualCensorshipCircumventionDomain = countryMetadata.googleDomain;
|
|
|
|
|
|
|
|
OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated = isEnabled;
|
|
|
|
}
|
|
|
|
|
2017-08-18 20:38:08 +02:00
|
|
|
+ (void)clearHasDismissedOffers
|
|
|
|
{
|
2017-08-21 23:13:36 +02:00
|
|
|
[TSStorageManager.sharedManager.dbReadWriteConnection
|
2017-08-18 20:38:08 +02:00
|
|
|
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
|
|
|
NSMutableArray<TSContactThread *> *contactThreads = [NSMutableArray new];
|
|
|
|
[transaction
|
|
|
|
enumerateKeysAndObjectsInCollection:[TSThread collection]
|
|
|
|
usingBlock:^(NSString *_Nonnull key, id _Nonnull object, BOOL *_Nonnull stop) {
|
|
|
|
TSThread *thread = object;
|
|
|
|
if (thread.isGroupThread) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
TSContactThread *contactThread = object;
|
|
|
|
[contactThreads addObject:contactThread];
|
|
|
|
}];
|
|
|
|
for (TSContactThread *contactThread in contactThreads) {
|
|
|
|
if (contactThread.hasDismissedOffers) {
|
|
|
|
contactThread.hasDismissedOffers = NO;
|
|
|
|
[contactThread saveWithTransaction:transaction];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
2017-07-28 17:13:55 +02:00
|
|
|
@end
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|