mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
125 lines
5.7 KiB
Objective-C
125 lines
5.7 KiB
Objective-C
//
|
||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||
//
|
||
|
||
@import PromiseKit;
|
||
|
||
#import "NotificationSettingsViewController.h"
|
||
#import "NotificationSettingsOptionsViewController.h"
|
||
#import "OWSSoundSettingsViewController.h"
|
||
#import <SessionMessagingKit/Environment.h>
|
||
#import <SessionMessagingKit/OWSPreferences.h>
|
||
#import <SessionMessagingKit/OWSSounds.h>
|
||
#import <SignalUtilitiesKit/UIUtil.h>
|
||
#import "Session-Swift.h"
|
||
|
||
@implementation NotificationSettingsViewController
|
||
|
||
- (void)viewDidLoad
|
||
{
|
||
[super viewDidLoad];
|
||
|
||
[self updateTableContents];
|
||
|
||
[LKViewControllerUtilities setUpDefaultSessionStyleForVC:self withTitle:NSLocalizedString(@"vc_notification_settings_title", @"") customBackButton:YES];
|
||
self.tableView.backgroundColor = UIColor.clearColor;
|
||
}
|
||
|
||
- (void)viewDidAppear:(BOOL)animated
|
||
{
|
||
[super viewDidAppear:animated];
|
||
|
||
[self updateTableContents];
|
||
}
|
||
|
||
#pragma mark - Table Contents
|
||
|
||
- (void)updateTableContents
|
||
{
|
||
OWSTableContents *contents = [OWSTableContents new];
|
||
|
||
__weak NotificationSettingsViewController *weakSelf = self;
|
||
|
||
OWSPreferences *prefs = Environment.shared.preferences;
|
||
|
||
OWSTableSection *strategySection = [OWSTableSection new];
|
||
strategySection.headerTitle = NSLocalizedString(@"preferences_notifications_strategy_category_title", @"");
|
||
[strategySection addItem:[OWSTableItem switchItemWithText:@"Use Fast Mode"
|
||
accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"push_notification_strategy")
|
||
isOnBlock:^{
|
||
return [NSUserDefaults.standardUserDefaults boolForKey:@"isUsingFullAPNs"];
|
||
}
|
||
isEnabledBlock:^{
|
||
return YES;
|
||
}
|
||
target:weakSelf
|
||
selector:@selector(didToggleAPNsSwitch:)]];
|
||
strategySection.footerTitle = @"You’ll be notified of new messages reliably and immediately using Apple’s notification servers. The contents of your messages, and who you’re messaging, are never exposed to Apple.";
|
||
[contents addSection:strategySection];
|
||
|
||
// Sounds section.
|
||
|
||
OWSTableSection *soundsSection = [OWSTableSection new];
|
||
soundsSection.headerTitle
|
||
= NSLocalizedString(@"SETTINGS_SECTION_SOUNDS", @"Header Label for the sounds section of settings views.");
|
||
[soundsSection
|
||
addItem:[OWSTableItem disclosureItemWithText:
|
||
NSLocalizedString(@"SETTINGS_ITEM_NOTIFICATION_SOUND",
|
||
@"Label for settings view that allows user to change the notification sound.")
|
||
detailText:[OWSSounds displayNameForSound:[OWSSounds globalNotificationSound]]
|
||
accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"message_sound")
|
||
actionBlock:^{
|
||
OWSSoundSettingsViewController *vc = [OWSSoundSettingsViewController new];
|
||
[weakSelf.navigationController pushViewController:vc animated:YES];
|
||
}]];
|
||
|
||
NSString *inAppSoundsLabelText = NSLocalizedString(@"NOTIFICATIONS_SECTION_INAPP",
|
||
@"Table cell switch label. When disabled, Signal will not play notification sounds while the app is in the "
|
||
@"foreground.");
|
||
[soundsSection addItem:[OWSTableItem switchItemWithText:inAppSoundsLabelText
|
||
accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"in_app_sounds")
|
||
isOnBlock:^{
|
||
return [prefs soundInForeground];
|
||
}
|
||
isEnabledBlock:^{
|
||
return YES;
|
||
}
|
||
target:weakSelf
|
||
selector:@selector(didToggleSoundNotificationsSwitch:)]];
|
||
[contents addSection:soundsSection];
|
||
|
||
OWSTableSection *backgroundSection = [OWSTableSection new];
|
||
backgroundSection.headerTitle = NSLocalizedString(@"SETTINGS_NOTIFICATION_CONTENT_TITLE", @"table section header");
|
||
[backgroundSection
|
||
addItem:[OWSTableItem
|
||
disclosureItemWithText:NSLocalizedString(@"NOTIFICATIONS_SHOW", nil)
|
||
detailText:[prefs nameForNotificationPreviewType:[prefs notificationPreviewType]]
|
||
accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"options")
|
||
actionBlock:^{
|
||
NotificationSettingsOptionsViewController *vc =
|
||
[NotificationSettingsOptionsViewController new];
|
||
[weakSelf.navigationController pushViewController:vc animated:YES];
|
||
}]];
|
||
backgroundSection.footerTitle
|
||
= NSLocalizedString(@"The information shown in notifications when your phone is locked.", @"");
|
||
[contents addSection:backgroundSection];
|
||
|
||
self.contents = contents;
|
||
}
|
||
|
||
#pragma mark - Events
|
||
|
||
- (void)didToggleSoundNotificationsSwitch:(UISwitch *)sender
|
||
{
|
||
[Environment.shared.preferences setSoundInForeground:sender.on];
|
||
}
|
||
|
||
- (void)didToggleAPNsSwitch:(UISwitch *)sender
|
||
{
|
||
[NSUserDefaults.standardUserDefaults setBool:sender.on forKey:@"isUsingFullAPNs"];
|
||
OWSSyncPushTokensJob *syncTokensJob = [[OWSSyncPushTokensJob alloc] initWithAccountManager:AppEnvironment.shared.accountManager preferences:Environment.shared.preferences];
|
||
syncTokensJob.uploadOnlyIfStale = NO;
|
||
[[syncTokensJob run] retainUntilComplete];
|
||
}
|
||
|
||
@end
|