diff --git a/Signal/Images.xcassets/introducing-link-previews-dark.imageset/Contents.json b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/Contents.json new file mode 100644 index 000000000..04380b6ec --- /dev/null +++ b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ios-rick-roll-dark@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "ios-rick-roll-dark@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "ios-rick-roll-dark@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@1x.png b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@1x.png new file mode 100644 index 000000000..7cafa41f9 Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@1x.png differ diff --git a/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@2x.png b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@2x.png new file mode 100644 index 000000000..efce04881 Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@2x.png differ diff --git a/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@3x.png b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@3x.png new file mode 100644 index 000000000..5ecdfa362 Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-dark.imageset/ios-rick-roll-dark@3x.png differ diff --git a/Signal/Images.xcassets/introducing-link-previews-light.imageset/Contents.json b/Signal/Images.xcassets/introducing-link-previews-light.imageset/Contents.json new file mode 100644 index 000000000..cbae4da59 --- /dev/null +++ b/Signal/Images.xcassets/introducing-link-previews-light.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ios-rick-roll-light@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "ios-rick-roll-light@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "ios-rick-roll-light@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@1x.png b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@1x.png new file mode 100644 index 000000000..b7ed78e34 Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@1x.png differ diff --git a/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@2x.png b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@2x.png new file mode 100644 index 000000000..16422c6da Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@2x.png differ diff --git a/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@3x.png b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@3x.png new file mode 100644 index 000000000..a73f3e7c9 Binary files /dev/null and b/Signal/Images.xcassets/introducing-link-previews-light.imageset/ios-rick-roll-light@3x.png differ diff --git a/Signal/src/ViewControllers/ExperienceUpgradesPageViewController.swift b/Signal/src/ViewControllers/ExperienceUpgradesPageViewController.swift index fbdc4a0ad..c9e291af0 100644 --- a/Signal/src/ViewControllers/ExperienceUpgradesPageViewController.swift +++ b/Signal/src/ViewControllers/ExperienceUpgradesPageViewController.swift @@ -640,6 +640,17 @@ public class ExperienceUpgradesPageViewController: OWSViewController, UIPageView self.pageViewController.setViewControllers([ firstViewController ], direction: .forward, animated: false, completion: nil) } + func dismissButtonTitle() -> String { + // This should be true for "Opt-in" features/upgrades. + let useNotNowButton = false + if useNotNowButton { + return NSLocalizedString("EXPERIENCE_UPGRADE_DISMISS_BUTTON", + comment: "Button to dismiss/ignore the one time splash screen that appears after upgrading") + } else { + return NSLocalizedString("OK", comment: "") + } + } + @objc public override func loadView() { self.view = UIView.container() view.backgroundColor = Theme.backgroundColor @@ -658,7 +669,7 @@ public class ExperienceUpgradesPageViewController: OWSViewController, UIPageView // Dismiss button let dismissButton = UIButton() view.addSubview(dismissButton) - dismissButton.setTitle(NSLocalizedString("EXPERIENCE_UPGRADE_DISMISS_BUTTON", comment: "Button to dismiss/ignore the one time splash screen that appears after upgrading"), for: .normal) + dismissButton.setTitle(dismissButtonTitle(), for: .normal) dismissButton.setTitleColor(UIColor.ows_signalBrandBlue, for: .normal) dismissButton.isUserInteractionEnabled = true dismissButton.addTarget(self, action: #selector(didTapDismissButton), for: .touchUpInside) diff --git a/Signal/src/environment/ExperienceUpgrades/ExperienceUpgradeFinder.swift b/Signal/src/environment/ExperienceUpgrades/ExperienceUpgradeFinder.swift index 03ccb1cef..ea55bfc09 100644 --- a/Signal/src/environment/ExperienceUpgrades/ExperienceUpgradeFinder.swift +++ b/Signal/src/environment/ExperienceUpgrades/ExperienceUpgradeFinder.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // import Foundation @@ -11,7 +11,8 @@ enum ExperienceUpgradeId: String { introducingProfiles = "003", introducingReadReceipts = "004", introducingCustomNotificationAudio = "005", - introducingTypingIndicators = "006" + introducingTypingIndicators = "006", + introducingLinkPreviews = "007" } @objc public class ExperienceUpgradeFinder: NSObject { @@ -69,6 +70,21 @@ enum ExperienceUpgradeId: String { image: #imageLiteral(resourceName: "introductory_splash_custom_audio")) } + var linkPreviews: ExperienceUpgrade { + let imageName = Theme.isDarkThemeEnabled ? "introducing-link-previews-dark" : "introducing-link-previews-light" + let image: UIImage + if let heroImage = UIImage(named: imageName) { + image = heroImage + } else { + owsFailDebug("Could not load hero image.") + image = #imageLiteral(resourceName: "introductory_splash_custom_audio") + } + return ExperienceUpgrade(uniqueId: ExperienceUpgradeId.introducingLinkPreviews.rawValue, + title: NSLocalizedString("UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE", comment: "Header for upgrading users"), + body: NSLocalizedString("UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_DESCRIPTION", comment: "Body text for upgrading users"), + image: image) + } + // Keep these ordered by increasing uniqueId. @objc public var allExperienceUpgrades: [ExperienceUpgrade] { @@ -82,7 +98,8 @@ enum ExperienceUpgradeId: String { // introducingProfiles, // introducingReadReceipts, // configurableNotificationAudio - typingIndicators + // typingIndicators + linkPreviews ].compactMap { $0 } } diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 97ca3abdc..4b1cf2ddf 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -2375,6 +2375,12 @@ /* button label shown one time, after upgrade */ "UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators"; +/* Body text for upgrading users */ +"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_DESCRIPTION" = "Optional link previews are now supported for some of the most popular sites on the Internet. You can disable or enable this feature anytime in your Signal settings (Privacy > Send link previews)."; + +/* Header for upgrading users */ +"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE" = "Link Previews"; + /* Description for notification audio customization */ "UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";