diff --git a/Classes/Settings/PushNotificationsDisclaimerViewController.swift b/Classes/Settings/PushNotificationsDisclaimerViewController.swift
new file mode 100644
index 000000000..3bb6b1733
--- /dev/null
+++ b/Classes/Settings/PushNotificationsDisclaimerViewController.swift
@@ -0,0 +1,53 @@
+//
+// PushNotificationsDisclaimerViewController.swift
+// Freetime
+//
+// Created by Ryan Nystrom on 10/13/18.
+// Copyright © 2018 Ryan Nystrom. All rights reserved.
+//
+
+import UIKit
+
+final class PushNotificationsDisclaimerViewController: UIViewController {
+
+ private let textView = UITextView()
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ navigationItem.rightBarButtonItem = UIBarButtonItem(
+ barButtonSystemItem: .done,
+ target: self,
+ action: #selector(onDone)
+ )
+ title = NSLocalizedString("Push Notifications", comment: "")
+
+ textView.textContainerInset = UIEdgeInsets(
+ top: 0,
+ left: Styles.Sizes.gutter,
+ bottom: Styles.Sizes.gutter,
+ right: Styles.Sizes.gutter
+ )
+ textView.isEditable = false
+
+ textView.font = Styles.Text.body.preferredFont
+ textView.textColor = Styles.Colors.Gray.dark.color
+ textView.text = NSLocalizedString("GitHawk uses iOS background fetch to periodically check for new GitHub notifications. When there is new content available, GitHawk sends alerts with local notifications.\n\nThis setup requires Background App Refresh be enabled to work. Enable this feature in Settings > General > Background App Refresh.\n\nAt GitHawk, we value your privacy and data. Real-time push notifications require sending your authentication data to servers, which is a security risk we want to avoid.", comment: "")
+ view.addSubview(textView)
+
+ preferredContentSize = textView.sizeThatFits(CGSize(
+ width: min(320, UIScreen.main.bounds.width - Styles.Sizes.rowSpacing * 2),
+ height: CGFloat.greatestFiniteMagnitude
+ ))
+ }
+
+ override func viewWillLayoutSubviews() {
+ super.viewWillLayoutSubviews()
+ textView.frame = view.bounds
+ }
+
+ @objc private func onDone() {
+ dismiss(animated: true)
+ }
+
+}
diff --git a/Classes/Settings/Settings.storyboard b/Classes/Settings/Settings.storyboard
index d8f5ec2c2..6b958d8ca 100644
--- a/Classes/Settings/Settings.storyboard
+++ b/Classes/Settings/Settings.storyboard
@@ -259,12 +259,21 @@
+
+
+
diff --git a/Classes/Settings/SettingsViewController.swift b/Classes/Settings/SettingsViewController.swift
index 6610b37d8..ce7985666 100644
--- a/Classes/Settings/SettingsViewController.swift
+++ b/Classes/Settings/SettingsViewController.swift
@@ -267,6 +267,10 @@ NewIssueTableViewControllerDelegate {
@IBAction func onSignature(_ sender: Any) {
Signature.enabled = signatureSwitch.isOn
}
+
+ @IBAction func onPushNotificationsInfo(_ sender: Any) {
+ showContextualMenu(PushNotificationsDisclaimerViewController())
+ }
// MARK: NewIssueTableViewControllerDelegate
diff --git a/Freetime.xcodeproj/project.pbxproj b/Freetime.xcodeproj/project.pbxproj
index abf07102e..1ea8381ff 100644
--- a/Freetime.xcodeproj/project.pbxproj
+++ b/Freetime.xcodeproj/project.pbxproj
@@ -70,6 +70,7 @@
292ACE1B1F5CAFAD00C9A02C /* RepositoryEmptyResultsType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292ACE1A1F5CAFAD00C9A02C /* RepositoryEmptyResultsType.swift */; };
292ACE1E1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292ACE1C1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift */; };
292ACE1F1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292ACE1D1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift */; };
+ 292AD6B2217236C200273D80 /* PushNotificationsDisclaimerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292AD6B1217236C200273D80 /* PushNotificationsDisclaimerViewController.swift */; };
292CD3BB1F0AF28F00D3D57B /* IssueDiffHunkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292CD3BA1F0AF28F00D3D57B /* IssueDiffHunkModel.swift */; };
292CD3BD1F0AF3B800D3D57B /* IssueDiffHunkSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292CD3BC1F0AF3B800D3D57B /* IssueDiffHunkSectionController.swift */; };
292CD3BF1F0AF3C000D3D57B /* IssueDiffHunkPathCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292CD3BE1F0AF3C000D3D57B /* IssueDiffHunkPathCell.swift */; };
@@ -603,6 +604,7 @@
292ACE1A1F5CAFAD00C9A02C /* RepositoryEmptyResultsType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RepositoryEmptyResultsType.swift; sourceTree = ""; };
292ACE1C1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RepositoryEmptyResultsCell.swift; sourceTree = ""; };
292ACE1D1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RepositoryEmptyResultsSectionController.swift; sourceTree = ""; };
+ 292AD6B1217236C200273D80 /* PushNotificationsDisclaimerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationsDisclaimerViewController.swift; sourceTree = ""; };
292CD3BA1F0AF28F00D3D57B /* IssueDiffHunkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueDiffHunkModel.swift; sourceTree = ""; };
292CD3BC1F0AF3B800D3D57B /* IssueDiffHunkSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueDiffHunkSectionController.swift; sourceTree = ""; };
292CD3BE1F0AF3C000D3D57B /* IssueDiffHunkPathCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueDiffHunkPathCell.swift; sourceTree = ""; };
@@ -1902,6 +1904,7 @@
isa = PBXGroup;
children = (
2930988E211F32D100E1178B /* DefaultReactionDetailController.swift */,
+ 292AD6B1217236C200273D80 /* PushNotificationsDisclaimerViewController.swift */,
292FF8AB1F2FD3EC009E63F7 /* Settings.storyboard */,
297FB7771F51128A00F2E618 /* SettingsAccountsViewController.swift */,
29764C131FDC4DB60095FF95 /* SettingsLabel.swift */,
@@ -3023,6 +3026,7 @@
29DAA7AF20202BEA0029277A /* PullRequestReviewReplyModel.swift in Sources */,
29B94E691FCB36A000715D7E /* File+ListDiffable.swift in Sources */,
986B873E1F2E1CE400AAB55C /* RepositoryClient.swift in Sources */,
+ 292AD6B2217236C200273D80 /* PushNotificationsDisclaimerViewController.swift in Sources */,
295A77BE1F75C1CC007BC403 /* RepositoryDetails.swift in Sources */,
292ACE1E1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift in Sources */,
292ACE1F1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift in Sources */,