From 4ec4479bba2d4dd2a2fc9323e5665a5960d7930e Mon Sep 17 00:00:00 2001 From: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Date: Thu, 29 Apr 2021 17:55:56 +0200 Subject: [PATCH] feature/survey (#526) --- .../survey.dude.imageset/Contents.json | 23 ++++ .../survey.dude.imageset/survey.dude.png | Bin 0 -> 6459 bytes .../survey.dude.imageset/survey.dude@2x.png | Bin 0 -> 14532 bytes .../survey.dude.imageset/survey.dude@3x.png | Bin 0 -> 24193 bytes Sources/AppDelegate.swift | 6 +- Sources/NavigationViewController.swift | 8 +- .../PMFSurveyPromptViewController.swift | 103 ++++++++++++++++++ Sources/UserDefaultsKeys.swift | 4 + Sources/UserPrompts.swift | 15 +++ 9 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 Assets.xcassets/survey.dude.imageset/Contents.json create mode 100644 Assets.xcassets/survey.dude.imageset/survey.dude.png create mode 100644 Assets.xcassets/survey.dude.imageset/survey.dude@2x.png create mode 100644 Assets.xcassets/survey.dude.imageset/survey.dude@3x.png create mode 100644 Sources/Scenes/PMFSurveyPrompt/PMFSurveyPromptViewController.swift diff --git a/Assets.xcassets/survey.dude.imageset/Contents.json b/Assets.xcassets/survey.dude.imageset/Contents.json new file mode 100644 index 00000000..c534c90b --- /dev/null +++ b/Assets.xcassets/survey.dude.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "survey.dude.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "survey.dude@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "survey.dude@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Assets.xcassets/survey.dude.imageset/survey.dude.png b/Assets.xcassets/survey.dude.imageset/survey.dude.png new file mode 100644 index 0000000000000000000000000000000000000000..144ef008c04f0a5cd21658f5f99438e1d2bc39e8 GIT binary patch literal 6459 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ìIb=KO7Q~Z8&=z*@ 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 NXJKM(+=wL*{|8}=X|ezS literal 0 HcmV?d00001 diff --git a/Sources/AppDelegate.swift b/Sources/AppDelegate.swift index a27c913d..5ed17a03 100644 --- a/Sources/AppDelegate.swift +++ b/Sources/AppDelegate.swift @@ -265,7 +265,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return } - nav.presentNotificiationPrompt() + if nav.presentNotificiationPrompt() { + return + } + + _ = nav.presentSurveyPrompt() } } diff --git a/Sources/NavigationViewController.swift b/Sources/NavigationViewController.swift index 4cf3af6e..04e23cd5 100644 --- a/Sources/NavigationViewController.swift +++ b/Sources/NavigationViewController.swift @@ -127,8 +127,12 @@ class NavigationViewController: UINavigationController { present(preview, animated: true) } - func presentNotificiationPrompt() { - UserPrompts.promptForNotifications(onView: self) + func presentNotificiationPrompt() -> Bool { + return UserPrompts.promptForNotifications(onView: self) + } + + func presentSurveyPrompt() -> Bool { + return UserPrompts.promptForPMFSurvey(onView: self) } private func showClosedError() { diff --git a/Sources/Scenes/PMFSurveyPrompt/PMFSurveyPromptViewController.swift b/Sources/Scenes/PMFSurveyPrompt/PMFSurveyPromptViewController.swift new file mode 100644 index 00000000..2fbbbefc --- /dev/null +++ b/Sources/Scenes/PMFSurveyPrompt/PMFSurveyPromptViewController.swift @@ -0,0 +1,103 @@ +import SafariServices +import UIKit + +class PMFSurveyPromptViewController: DrawerViewController { + override init() { + super.init() + + manager.drawer.openHeightBehavior = .fitting + manager.drawer.backgroundColor = .foreground + } + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .foreground + + let image = UIImageView(image: UIImage(named: "survey.dude")) + image.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(image) + + let title = UILabel() + title.translatesAutoresizingMaskIntoConstraints = false + title.text = "We want your feedback!" + title.font = .rounded(forTextStyle: .title1, weight: .bold) + title.numberOfLines = 0 + title.textColor = .white + title.textAlignment = .center + view.addSubview(title) + + let content = UILabel() + content.translatesAutoresizingMaskIntoConstraints = false + content.text = "Please take the time to complete this quick 2 minute survey. Your answers will help us create a better Soapbox experience for you!" + content.numberOfLines = 0 + content.textColor = .white + content.font = .rounded(forTextStyle: .body, weight: .semibold) + view.addSubview(content) + + let survey = Button(size: .large) + survey.translatesAutoresizingMaskIntoConstraints = false + survey.setTitle("Complete Survey", for: .normal) + survey.addTarget(self, action: #selector(openSurvey), for: .touchUpInside) + view.addSubview(survey) + + let cancelButton = UIButton() + cancelButton.setTitle("Not Now", for: .normal) + cancelButton.setTitleColor(.secondaryLabel, for: .normal) + cancelButton.translatesAutoresizingMaskIntoConstraints = false + cancelButton.titleLabel?.font = .rounded(forTextStyle: .title3, weight: .bold) + cancelButton.addTarget(self, action: #selector(close), for: .touchUpInside) + view.addSubview(cancelButton) + + NSLayoutConstraint.activate([ + image.centerXAnchor.constraint(equalTo: view.centerXAnchor), + image.topAnchor.constraint(equalTo: handle.bottomAnchor, constant: 40), + ]) + + NSLayoutConstraint.activate([ + title.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 60), + title.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -60), + title.topAnchor.constraint(equalTo: image.bottomAnchor, constant: 20), + ]) + + NSLayoutConstraint.activate([ + content.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 30), + content.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -30), + content.topAnchor.constraint(equalTo: title.bottomAnchor, constant: 40), + ]) + + NSLayoutConstraint.activate([ + survey.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20), + survey.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20), + survey.topAnchor.constraint(equalTo: content.bottomAnchor, constant: 20), + ]) + + NSLayoutConstraint.activate([ + cancelButton.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20), + cancelButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20), + cancelButton.topAnchor.constraint(equalTo: survey.bottomAnchor, constant: 20), + cancelButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20), + ]) + } + + required init?(coder _: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + @objc private func openSurvey() { + let parent = presentingViewController! + + let url = "https://soapboxsocial.typeform.com/to/X2RBcn2C#user_id=\(UserDefaults.standard.integer(forKey: UserDefaultsKeys.userId))" + dismiss(animated: true, completion: { + DispatchQueue.main.async { + let safari = SFSafariViewController(url: URL(string: url)!) + safari.modalPresentationStyle = .overFullScreen + parent.present(safari, animated: true) + } + }) + } + + @objc private func close() { + dismiss(animated: true) + } +} diff --git a/Sources/UserDefaultsKeys.swift b/Sources/UserDefaultsKeys.swift index e5d1342f..2bf2115c 100644 --- a/Sources/UserDefaultsKeys.swift +++ b/Sources/UserDefaultsKeys.swift @@ -32,4 +32,8 @@ class UserDefaultsKeys { class var lastNotificationsStartupPrompted: String { return "lastNotificationsStartupPrompted" } + + class var hasAskedForPMFSurvey: String { + return "hasAskedForPMFSurvey" + } } diff --git a/Sources/UserPrompts.swift b/Sources/UserPrompts.swift index cadfc2af..9e8c7114 100644 --- a/Sources/UserPrompts.swift +++ b/Sources/UserPrompts.swift @@ -76,4 +76,19 @@ class UserPrompts { return true } + + static func promptForPMFSurvey(onView view: UIViewController) -> Bool { + if UserDefaults.standard.bool(forKey: UserDefaultsKeys.hasAskedForPMFSurvey) { + return false + } + + if UserDefaults.standard.integer(forKey: UserDefaultsKeys.userId) == 19 { + return false + } + + view.present(PMFSurveyPromptViewController(), animated: true) + UserDefaults.standard.set(true, forKey: UserDefaultsKeys.hasAskedForPMFSurvey) + + return true + } }