diff --git a/Kickstarter-iOS/Locales/Base.lproj/Localizable.strings b/Kickstarter-iOS/Locales/Base.lproj/Localizable.strings
index 727454bcde..cfdc724fc3 100644
--- a/Kickstarter-iOS/Locales/Base.lproj/Localizable.strings
+++ b/Kickstarter-iOS/Locales/Base.lproj/Localizable.strings
@@ -29,6 +29,7 @@
"Any_payment_methods_you_saved_to_Kickstarter" = "Any payment methods you've saved to Kickstarter are listed here (securely) for your convenience.";
"App_version" = "App version";
"Are_you_sure" = "Are you sure?";
+"Are_you_sure_you_wish_to_remove_this_card" = "Are you sure you wish to remove this card from your payment method options?";
"Ask_me_anything" = "Ask me anything";
"Available_to_watch_for_time_more_units" = "Available to watch for %{time} more %{units}";
"Back" = "Back";
@@ -249,6 +250,7 @@
"Messages" = "Messages";
"Name" = "Name";
"Never" = "Never";
+"New_email" = "New email";
"New_password" = "New password";
"New_pledge_activity" = "New pledge activity";
"New_work_and_big_ideas_from_established_and" = "New work and big ideas from established and emerging artists.";
@@ -257,6 +259,7 @@
"No_Results" = "No Results";
"No_comments_yet" = "No comments yet.";
"No_messages" = "No messages";
+"No_nevermind" = "No, nevermind";
"No_one_has_posted_an_update_yet" = "No one has posted an update yet.";
"No_pledges_from_friends_yet" = "No pledges\nfrom friends yet.";
"No_replay_is_available_for_this_live_stream" = "No replay is available for this live stream.";
@@ -335,6 +338,7 @@
"Recommended_For_You" = "Recommended For You";
"Recorded_Live" = "Recorded Live";
"Recorded_live_with_creator_name" = "Recorded live with %{creator_name}";
+"Remove_this_card" = "Remove this card";
"Replay" = "Replay";
"Replay_available_for_time_more_units" = "Replay available for %{time} more %{units}";
"Replay_live_stream_with_creator_name" = "Replay live stream with
%{creator_name}";
@@ -460,6 +464,7 @@
"When_you_save_a_project_we_ll_send_you_a_reminder" = "When you save a project we’ll send you a reminder 48 hours before it ends";
"Write_a_bio" = "Write a short bio. Just a sentence or two is great.";
"Yes_change_currency" = "Yes, Change currency";
+"Yes_remove" = "Yes, remove";
"Yes_turn_off" = "Yes, turn off";
"You_Launched" = "You Launched!";
"You_backed_this_project" = "You backed this project.";
diff --git a/Kickstarter-iOS/Locales/de.lproj/Localizable.strings b/Kickstarter-iOS/Locales/de.lproj/Localizable.strings
index 3e0482fca5..7541527b6d 100644
--- a/Kickstarter-iOS/Locales/de.lproj/Localizable.strings
+++ b/Kickstarter-iOS/Locales/de.lproj/Localizable.strings
@@ -29,6 +29,7 @@
"Any_payment_methods_you_saved_to_Kickstarter" = "Sämtliche auf Kickstarter gespeicherten Zahlungsmethoden sind hier (sicher) hinterlegt.";
"App_version" = "App-Version";
"Are_you_sure" = "Bist du sicher?";
+"Are_you_sure_you_wish_to_remove_this_card" = "Are you sure you wish to remove this card from your payment method options?";
"Ask_me_anything" = "Frage stellen";
"Available_to_watch_for_time_more_units" = "Kann noch %{time} %{units} angesehen werden";
"Back" = "Zurück";
@@ -249,6 +250,7 @@
"Messages" = "Nachrichten";
"Name" = "Name";
"Never" = "Niemals";
+"New_email" = "New email";
"New_password" = "Neues Passwort";
"New_pledge_activity" = "Neue Finanzierungsbeiträge";
"New_work_and_big_ideas_from_established_and" = "Neue Arbeiten und großartige Ideen von etablierten und neuen Künstlern.";
@@ -257,6 +259,7 @@
"No_Results" = "Keine Ergebnisse";
"No_comments_yet" = "Bisher noch keine Kommentare.";
"No_messages" = "Keine Nachrichten";
+"No_nevermind" = "No, nevermind";
"No_one_has_posted_an_update_yet" = "Es wurden noch keine Updates gepostet.";
"No_pledges_from_friends_yet" = "Es gibt noch keine Beiträge von Freunden.";
"No_replay_is_available_for_this_live_stream" = "Keine Wiedergabe verügbar für diesen Live-Stream.";
@@ -335,6 +338,7 @@
"Recommended_For_You" = "Empfehlungen für dich";
"Recorded_Live" = "Live aufgenommen";
"Recorded_live_with_creator_name" = "Live aufgenommen von %{creator_name}";
+"Remove_this_card" = "Remove this card";
"Replay" = "Wiedergabe";
"Replay_available_for_time_more_units" = "Wiedergabe verfügbar für weitere %{time} %{units}";
"Replay_live_stream_with_creator_name" = "Wiedergabe des Live-Streams von
%{creator_name}";
@@ -460,6 +464,7 @@
"When_you_save_a_project_we_ll_send_you_a_reminder" = "Wenn du ein Projekt speicherst, senden wir dir 48 Stunden vor Ablauf eine Erinnerungs-E-Mail";
"Write_a_bio" = "Schreibe eine kurze Biografie, ein oder zwei Sätze genügen.";
"Yes_change_currency" = "Ja, Währung ändern";
+"Yes_remove" = "Yes, remove";
"Yes_turn_off" = "Ja, deaktivieren";
"You_Launched" = "Dein Projekt ist live!";
"You_backed_this_project" = "Du hast dieses Projekt unterstützt.";
diff --git a/Kickstarter-iOS/Locales/es.lproj/Localizable.strings b/Kickstarter-iOS/Locales/es.lproj/Localizable.strings
index 89e35562e5..f45f5489e1 100644
--- a/Kickstarter-iOS/Locales/es.lproj/Localizable.strings
+++ b/Kickstarter-iOS/Locales/es.lproj/Localizable.strings
@@ -29,6 +29,7 @@
"Any_payment_methods_you_saved_to_Kickstarter" = "Para tu comodidad, aquí se enumeran (de manera absolutamente segura) los métodos de pago que guardaste en Kickstarter.";
"App_version" = "Versión de la aplicación";
"Are_you_sure" = "¿Estás seguro?";
+"Are_you_sure_you_wish_to_remove_this_card" = "Are you sure you wish to remove this card from your payment method options?";
"Ask_me_anything" = "¡Pregúntame!";
"Available_to_watch_for_time_more_units" = "Disponible para reproducción %{time} %{units} más";
"Back" = "Atrás";
@@ -249,6 +250,7 @@
"Messages" = "Mensajes";
"Name" = "Nombre";
"Never" = "Nunca";
+"New_email" = "New email";
"New_password" = "Contraseña nueva";
"New_pledge_activity" = "Nueva actividad de contribución";
"New_work_and_big_ideas_from_established_and" = "Nuevos trabajos y grandes ideas de artistas establecidos y emergentes.";
@@ -257,6 +259,7 @@
"No_Results" = "Sin resultados";
"No_comments_yet" = "No hay comentarios todavia.";
"No_messages" = "No hay mensajes";
+"No_nevermind" = "No, nevermind";
"No_one_has_posted_an_update_yet" = "Todavía no se han publicado actualizaciones.";
"No_pledges_from_friends_yet" = "Todavía no hay contribuciones de amigos.";
"No_replay_is_available_for_this_live_stream" = "Este Live Stream no cuenta con repetición.";
@@ -335,6 +338,7 @@
"Recommended_For_You" = "Recomendaciones para ti";
"Recorded_Live" = "Grabado en vivo";
"Recorded_live_with_creator_name" = "Grabado en vivo por %{creator_name}";
+"Remove_this_card" = "Remove this card";
"Replay" = "Repetición";
"Replay_available_for_time_more_units" = "Repetición disponible por %{time} %{units} más";
"Replay_live_stream_with_creator_name" = "Repetir live stream de
%{creator_name}";
@@ -460,6 +464,7 @@
"When_you_save_a_project_we_ll_send_you_a_reminder" = "Cuando guardes un proyecto, te enviaremos un recordatorio por correo electrónico 48 horas antes de que finalice";
"Write_a_bio" = "Escribe una biografía breve mediante una oración o dos.";
"Yes_change_currency" = "Sí, cambiar la moneda";
+"Yes_remove" = "Yes, remove";
"Yes_turn_off" = "Sí, desactivar";
"You_Launched" = "¡Tu proyecto fue publicado!";
"You_backed_this_project" = "Patrocinaste este proyecto.";
diff --git a/Kickstarter-iOS/Locales/fr.lproj/Localizable.strings b/Kickstarter-iOS/Locales/fr.lproj/Localizable.strings
index 66b75853a8..55165b4170 100644
--- a/Kickstarter-iOS/Locales/fr.lproj/Localizable.strings
+++ b/Kickstarter-iOS/Locales/fr.lproj/Localizable.strings
@@ -29,6 +29,7 @@
"Any_payment_methods_you_saved_to_Kickstarter" = "Voici une liste (sécurisée) de tous les moyens de paiement que vous avez ajoutés à votre compte Kickstarter.";
"App_version" = "Version de l'application";
"Are_you_sure" = "Êtes-vous certain ?";
+"Are_you_sure_you_wish_to_remove_this_card" = "Are you sure you wish to remove this card from your payment method options?";
"Ask_me_anything" = "Posez-moi une question !";
"Available_to_watch_for_time_more_units" = "Plus que %{time}%{units} pour regarder cette diffusion";
"Back" = "Retour";
@@ -249,6 +250,7 @@
"Messages" = "Messages";
"Name" = "Nom";
"Never" = "Jamais";
+"New_email" = "New email";
"New_password" = "Nouveau mot de passe";
"New_pledge_activity" = "Nouveaux engagements";
"New_work_and_big_ideas_from_established_and" = "Grandes idées et nouveaux travaux signés par des artistes établis et émergents.";
@@ -257,6 +259,7 @@
"No_Results" = "Pas de résultats";
"No_comments_yet" = "Pas de commentaires.";
"No_messages" = "Pas de messages";
+"No_nevermind" = "No, nevermind";
"No_one_has_posted_an_update_yet" = "Pas d'actus publiées pour le moment.";
"No_pledges_from_friends_yet" = "Mes amis \nn'ont rien soutenu.";
"No_replay_is_available_for_this_live_stream" = "Pas de rediffusion possible pour cette diffusion en direct.";
@@ -335,6 +338,7 @@
"Recommended_For_You" = "Rien que pour vous";
"Recorded_Live" = "Enregistré en direct";
"Recorded_live_with_creator_name" = "Enregistré en direct avec %{creator_name}";
+"Remove_this_card" = "Remove this card";
"Replay" = "Rediffuser";
"Replay_available_for_time_more_units" = "Rediffusion encore disponible pendant %{time} %{units}";
"Replay_live_stream_with_creator_name" = "Revoir la diffusion en direct de
%{creator_name}";
@@ -460,6 +464,7 @@
"When_you_save_a_project_we_ll_send_you_a_reminder" = "Pour chaque projet que vous enregistrez, nous vous enverrons un rappel 48 heures avant la fin de sa campagne.";
"Write_a_bio" = "Une petite biographie d'une phrase ou deux.";
"Yes_change_currency" = "Oui, changer de devise";
+"Yes_remove" = "Yes, remove";
"Yes_turn_off" = "Oui, désactiver";
"You_Launched" = "Projet lancé !";
"You_backed_this_project" = "Vous avez soutenu ce projet.";
diff --git a/Kickstarter-iOS/Locales/ja.lproj/Localizable.strings b/Kickstarter-iOS/Locales/ja.lproj/Localizable.strings
index 7e3a54dabc..d6c40b2d58 100644
--- a/Kickstarter-iOS/Locales/ja.lproj/Localizable.strings
+++ b/Kickstarter-iOS/Locales/ja.lproj/Localizable.strings
@@ -29,6 +29,7 @@
"Any_payment_methods_you_saved_to_Kickstarter" = "Kickstarter に保存されたお支払い方法は、こちらに (安全に) リストアップされます。";
"App_version" = "アプリ版";
"Are_you_sure" = "オフにしてもよろしいですか?";
+"Are_you_sure_you_wish_to_remove_this_card" = "Are you sure you wish to remove this card from your payment method options?";
"Ask_me_anything" = "お問い合わせ";
"Available_to_watch_for_time_more_units" = "さらに%{time} の%{units} を見ることができます";
"Back" = "バック";
@@ -249,6 +250,7 @@
"Messages" = "メッセージ";
"Name" = "名前";
"Never" = "通知を受けない";
+"New_email" = "New email";
"New_password" = "新しいパスワード";
"New_pledge_activity" = "新しいプレッジ";
"New_work_and_big_ideas_from_established_and" = "新進アーティストや著名アーティストの最新プロジェクトやアイデアをご紹介。";
@@ -257,6 +259,7 @@
"No_Results" = "該当結果なし";
"No_comments_yet" = "まだコメントはありません。";
"No_messages" = "メッセージがありません。";
+"No_nevermind" = "No, nevermind";
"No_one_has_posted_an_update_yet" = "まだアップデートの投稿はありません。";
"No_pledges_from_friends_yet" = "友達からのプレッジはありません。";
"No_replay_is_available_for_this_live_stream" = "このライブ配信を再生することはできません";
@@ -335,6 +338,7 @@
"Recommended_For_You" = "あなたへのおすすめ";
"Recorded_Live" = "配信済ライブ";
"Recorded_live_with_creator_name" = "配信された%{creator_name}のライブ";
+"Remove_this_card" = "Remove this card";
"Replay" = "リプレイ";
"Replay_available_for_time_more_units" = "あと%{time}%{units} リプレイ可能";
"Replay_live_stream_with_creator_name" = "%{creator_name}のライブ配信を再生";
@@ -460,6 +464,7 @@
"When_you_save_a_project_we_ll_send_you_a_reminder" = "プロジェクトを保存し、終了の48時間前にリマインドする。";
"Write_a_bio" = "簡単な自己紹介を書いてください。ほんの1~2文で構いません。";
"Yes_change_currency" = "はい、通貨を変更します";
+"Yes_remove" = "Yes, remove";
"Yes_turn_off" = "はい、オフにします";
"You_Launched" = "発表されました!";
"You_backed_this_project" = "バック済";
diff --git a/Kickstarter-iOS/Views/Controllers/AddNewCardViewController.swift b/Kickstarter-iOS/Views/Controllers/AddNewCardViewController.swift
index 96322d47bd..4eaaaeb7be 100644
--- a/Kickstarter-iOS/Views/Controllers/AddNewCardViewController.swift
+++ b/Kickstarter-iOS/Views/Controllers/AddNewCardViewController.swift
@@ -2,21 +2,15 @@ import KsApi
import Library
import Prelude
import ReactiveSwift
+import Stripe
import UIKit
-internal final class AddNewCardViewController: UIViewController {
- @IBOutlet fileprivate weak var cardNumberLabel: UILabel!
- @IBOutlet fileprivate weak var cardNumberTextField: UITextField!
- @IBOutlet fileprivate weak var cardholderNameLabel: UILabel!
- @IBOutlet fileprivate weak var cardholderNameTextField: UITextField!
- @IBOutlet fileprivate weak var expirationLabel: UILabel!
- @IBOutlet fileprivate weak var expirationTextField: UITextField!
- @IBOutlet fileprivate weak var securityCodeLabel: UILabel!
- @IBOutlet fileprivate weak var securityCodeTextField: UITextField!
- @IBOutlet fileprivate weak var zipCodeLabel: UILabel!
- @IBOutlet fileprivate weak var zipCodeTextField: UITextField!
+internal final class AddNewCardViewController: UIViewController, STPPaymentCardTextFieldDelegate {
private weak var saveButtonView: LoadingBarButtonItemView!
+ @IBOutlet private weak var cardholderNameLabel: UILabel!
+ @IBOutlet private weak var cardholderNameTextField: UITextField!
+ @IBOutlet private weak var paymentField: STPPaymentCardTextField!
internal static func instantiate() -> AddNewCardViewController {
return Storyboard.Settings.instantiate(AddNewCardViewController.self)
@@ -37,6 +31,8 @@ internal final class AddNewCardViewController: UIViewController {
self.saveButtonView.addTarget(self, action: #selector(saveButtonTapped))
let navigationBarButton = UIBarButtonItem(customView: self.saveButtonView)
self.navigationItem.setRightBarButton(navigationBarButton, animated: false)
+
+ self.paymentField.delegate = self
}
override func bindStyles() {
@@ -45,42 +41,23 @@ internal final class AddNewCardViewController: UIViewController {
_ = self
|> settingsViewControllerStyle
- _ = [self.cardNumberTextField, self.cardholderNameTextField, self.expirationTextField,
- self.securityCodeTextField, self.zipCodeTextField]
- ||> formFieldStyle
- ||> \.textAlignment .~ .right
-
- _ = [self.cardNumberLabel, self.cardholderNameLabel, self.expirationLabel,
- self.securityCodeLabel, self.zipCodeLabel]
- ||> settingsTitleLabelStyle
-
- _ = [self.cardNumberTextField, self.expirationTextField, self.securityCodeTextField,
- self.zipCodeTextField]
- ||> \.keyboardType .~ .numberPad
-
- _ = self.cardNumberLabel
- |> \.text %~ { _ in Strings.Card_number() }
-
_ = self.cardholderNameLabel
+ |> settingsSectionLabelStyle
|> \.text %~ { _ in Strings.Cardholder_name() }
- _ = self.expirationLabel
- |> \.text %~ { _ in Strings.Expiration() }
-
- _ = self.securityCodeLabel
- |> \.text %~ { _ in Strings.Security_code() }
-
- _ = self.zipCodeLabel
- |> \.text %~ { _ in Strings.Zip_code() }
-
_ = self.cardholderNameTextField
- |> \.placeholder %~ { _ in Strings.Name() }
-
- _ = self.expirationTextField
- |> \.placeholder %~ { _ in Strings.MMYY() }
-
- _ = self.securityCodeTextField
- |> \.placeholder %~ { _ in Strings.CVC() }
+ |> formFieldStyle
+ |> \.textAlignment .~ .right
+ |> \.attributedPlaceholder .~ NSAttributedString(
+ string: Strings.Name(),
+ attributes: [NSAttributedString.Key.foregroundColor: UIColor.ksr_text_dark_grey_400])
+
+ _ = self.paymentField
+ |> \.borderColor .~ nil
+ |> \.font .~ .ksr_body()
+ |> \.cursorColor .~ .ksr_green_700
+ |> \.textColor .~ .ksr_text_dark_grey_500
+ |> \.placeholderColor .~ .ksr_text_dark_grey_400
}
@objc fileprivate func cancelButtonTapped() {
diff --git a/Kickstarter-iOS/Views/Controllers/ChangeEmailViewController.swift b/Kickstarter-iOS/Views/Controllers/ChangeEmailViewController.swift
index 765423ce5a..0fdcac573e 100644
--- a/Kickstarter-iOS/Views/Controllers/ChangeEmailViewController.swift
+++ b/Kickstarter-iOS/Views/Controllers/ChangeEmailViewController.swift
@@ -7,18 +7,17 @@ import UIKit
internal final class ChangeEmailViewController: UIViewController {
@IBOutlet fileprivate weak var currentEmailLabel: UILabel!
@IBOutlet fileprivate weak var currentEmail: UILabel!
- @IBOutlet fileprivate weak var errorLabel: UILabel!
- @IBOutlet fileprivate weak var errorView: UIView!
+ @IBOutlet fileprivate weak var messageLabelView: UIView!
@IBOutlet fileprivate weak var newEmailLabel: UILabel!
@IBOutlet fileprivate weak var newEmailTextField: UITextField!
@IBOutlet fileprivate weak var onePasswordButton: UIButton!
@IBOutlet fileprivate weak var passwordLabel: UILabel!
@IBOutlet fileprivate weak var passwordTextField: UITextField!
@IBOutlet fileprivate weak var resendVerificationEmailButton: UIButton!
- @IBOutlet fileprivate weak var resendVerificationStackView: UIStackView!
-
+ @IBOutlet fileprivate weak var resendVerificationEmailView: UIView!
@IBOutlet fileprivate weak var scrollView: UIScrollView!
- @IBOutlet fileprivate weak var resendVerificationEmailStackView: UIStackView!
+ @IBOutlet fileprivate weak var unverifiedEmailLabel: UILabel!
+ @IBOutlet fileprivate weak var warningMessageLabel: UILabel!
private let viewModel: ChangeEmailViewModelType = ChangeEmailViewModel()
private var messageBannerView: MessageBannerViewController!
@@ -63,46 +62,54 @@ internal final class ChangeEmailViewController: UIViewController {
_ = self
|> settingsViewControllerStyle
- |> UIViewController.lens.title %~ { _ in
+ |> \.title %~ { _ in
Strings.Change_email()
}
- _ = onePasswordButton
+ _ = self.onePasswordButton
|> onePasswordButtonStyle
- _ = errorLabel
+ _ = self.messageLabelView
+ |> \.backgroundColor .~ .ksr_grey_200
+
+ _ = self.unverifiedEmailLabel
|> settingsDescriptionLabelStyle
- |> UILabel.lens.text %~ { _ in Strings.Email_unverified() }
+ |> \.text %~ { _ in Strings.Email_unverified() }
- _ = currentEmailLabel
+ _ = self.warningMessageLabel
+ |> settingsDescriptionLabelStyle
+ |> \.textColor .~ .ksr_red_400
+ |> \.text %~ { _ in Strings.We_ve_been_unable_to_send_email() }
+
+ _ = self.currentEmailLabel
|> settingsTitleLabelStyle
+ |> \.text %~ { _ in Strings.Current_email() }
- _ = currentEmail
+ _ = self.currentEmail
|> settingsDetailLabelStyle
- _ = newEmailLabel
+ _ = self.newEmailLabel
|> settingsTitleLabelStyle
+ |> \.text %~ { _ in Strings.New_email() }
- _ = newEmailTextField
+ _ = self.newEmailTextField
|> formFieldStyle
- |> UITextField.lens.returnKeyType .~ .next
- |> UITextField.lens.textAlignment .~ .right
- |> UITextField.lens.placeholder %~ { _ in
+ |> \.returnKeyType .~ .next
+ |> \.textAlignment .~ .right
+ |> \.placeholder %~ { _ in
Strings.login_placeholder_email()
}
- _ = passwordLabel
+ _ = self.passwordLabel
|> settingsTitleLabelStyle
+ |> \.text %~ { _ in Strings.Current_password() }
- _ = resendVerificationStackView
- |> \.isHidden .~ true
-
- _ = passwordTextField
+ _ = self.passwordTextField
|> passwordFieldStyle
|> \.textAlignment .~ .right
|> \.returnKeyType .~ .go
- _ = resendVerificationEmailButton
+ _ = self.resendVerificationEmailButton
|> UIButton.lens.titleLabel.font .~ .ksr_body()
|> UIButton.lens.titleColor(for: .normal) .~ .ksr_text_green_700
}
@@ -110,13 +117,13 @@ internal final class ChangeEmailViewController: UIViewController {
override func bindViewModel() {
super.bindViewModel()
- self.resendVerificationStackView.rac.hidden = self.viewModel.outputs.resendVerificationStackViewIsHidden
self.currentEmail.rac.text = self.viewModel.outputs.emailText
-
+ self.resendVerificationEmailView.rac.hidden = self.viewModel.outputs.resendVerificationEmailViewIsHidden
self.resendVerificationEmailButton.rac.title = self.viewModel.outputs.verificationEmailButtonTitle
-
self.onePasswordButton.rac.hidden = self.viewModel.outputs.onePasswordButtonIsHidden
-
+ self.messageLabelView.rac.hidden = self.viewModel.outputs.messageLabelViewHidden
+ self.unverifiedEmailLabel.rac.hidden = self.viewModel.outputs.unverifiedEmailLabelHidden
+ self.warningMessageLabel.rac.hidden = self.viewModel.outputs.warningMessageLabelHidden
self.passwordTextField.rac.text = self.viewModel.outputs.passwordText
self.viewModel.outputs.activityIndicatorShouldShow
diff --git a/Kickstarter-iOS/Views/Controllers/ChangeEmailViewControllerTests.swift b/Kickstarter-iOS/Views/Controllers/ChangeEmailViewControllerTests.swift
index ebb457fe5e..8f0d2bbaf7 100644
--- a/Kickstarter-iOS/Views/Controllers/ChangeEmailViewControllerTests.swift
+++ b/Kickstarter-iOS/Views/Controllers/ChangeEmailViewControllerTests.swift
@@ -19,10 +19,63 @@ final class ChangeEmailViewControllerTests: TestCase {
func testChangeEmail() {
combos(Language.allLanguages, Device.allCases).forEach { language, device in
- withEnvironment(language: language) {
+ withEnvironment(currentUser: User.template, language: language) {
let controller = ChangeEmailViewController.instantiate()
let (parent, _) = traitControllers(device: device, orientation: .portrait, child: controller)
+ scheduler.advance()
+
+ FBSnapshotVerifyView(parent.view, identifier: "lang_\(language)_device_\(device)")
+ }
+ }
+ }
+
+ func testChangeEmailScreen_unverifiedEmail() {
+ let userEnvelope = UserEnvelope(me: UserEmailFields.template |> \.isEmailVerified .~ false)
+ let service = MockService(changeEmailResponse: userEnvelope)
+ combos(Language.allLanguages, Device.allCases).forEach { language, device in
+ withEnvironment(apiService: service, currentUser: User.template, language: language) {
+ let controller = ChangeEmailViewController.instantiate()
+ let (parent, _) = traitControllers(device: device, orientation: .portrait, child: controller)
+
+ scheduler.advance()
+
+ FBSnapshotVerifyView(parent.view, identifier: "lang_\(language)_device_\(device)")
+ }
+ }
+ }
+
+ func testChangeEmailScreen_unverifiedEmail_isCreator() {
+ let creator = User.template
+ |> \.stats.createdProjectsCount .~ 3
+ let userEnvelope = UserEnvelope(me: UserEmailFields.template |> \.isEmailVerified .~ false)
+
+ combos(Language.allLanguages, Device.allCases).forEach { language, device in
+ withEnvironment(apiService: MockService(changeEmailResponse: userEnvelope),
+ currentUser: creator,
+ language: language) {
+ let controller = ChangeEmailViewController.instantiate()
+ let (parent, _) = traitControllers(device: device, orientation: .portrait, child: controller)
+
+ scheduler.advance()
+
+ FBSnapshotVerifyView(parent.view, identifier: "lang_\(language)_device_\(device)")
+ }
+ }
+ }
+
+ func testChangeEmailScreen_undeliverableEmail() {
+ let userEnvelope = UserEnvelope(me: UserEmailFields.template
+ |> \.isEmailVerified .~ false
+ |> \.isDeliverable .~ false)
+ let service = MockService(changeEmailResponse: userEnvelope)
+ combos(Language.allLanguages, Device.allCases).forEach { language, device in
+ withEnvironment(apiService: service, currentUser: User.template, language: language) {
+ let controller = ChangeEmailViewController.instantiate()
+ let (parent, _) = traitControllers(device: device, orientation: .portrait, child: controller)
+
+ scheduler.advance()
+
FBSnapshotVerifyView(parent.view, identifier: "lang_\(language)_device_\(device)")
}
}
diff --git a/Kickstarter-iOS/Views/Storyboards/Settings.storyboard b/Kickstarter-iOS/Views/Storyboards/Settings.storyboard
index 3f46b7be5c..5267de1d39 100644
--- a/Kickstarter-iOS/Views/Storyboards/Settings.storyboard
+++ b/Kickstarter-iOS/Views/Storyboards/Settings.storyboard
@@ -151,7 +151,7 @@
-
+
@@ -203,79 +203,81 @@
-
-
+
+
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
+
-
+
@@ -359,9 +361,7 @@
-
-
@@ -405,16 +405,17 @@
-
-
+
-
+
+
+
@@ -799,7 +800,7 @@
-
+
@@ -808,7 +809,7 @@
-
+
@@ -817,169 +818,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -991,14 +831,14 @@
-
-
+
+
-
-
+
+
@@ -1028,6 +868,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1050,16 +927,9 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/Kickstarter.xcodeproj/project.pbxproj b/Kickstarter.xcodeproj/project.pbxproj
index fe3c9b1c16..a022e2520d 100644
--- a/Kickstarter.xcodeproj/project.pbxproj
+++ b/Kickstarter.xcodeproj/project.pbxproj
@@ -1034,7 +1034,7 @@
D6DC65522178CDDD008CF69C /* GraphUserEmailTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DC65512178CDDC008CF69C /* GraphUserEmailTemplate.swift */; };
D6E925CE211107CD00E13010 /* SettingsNewslettersDataSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6765B4C211091AB00AE3DB4 /* SettingsNewslettersDataSourceTests.swift */; };
D6ED1B37216D0C64007F7547 /* ChangeEmailViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B36216D0C64007F7547 /* ChangeEmailViewModelTests.swift */; };
- D6ED1B39216D50BE007F7547 /* GraphUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B38216D50BE007F7547 /* GraphUser.swift */; };
+ D6ED1B39216D50BE007F7547 /* UserEmailFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B38216D50BE007F7547 /* UserEmailFields.swift */; };
D6ED1B3B216D525B007F7547 /* ChangeEmailInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B3A216D525B007F7547 /* ChangeEmailInput.swift */; };
D6ED1B3E216D61E0007F7547 /* UpdateUserAccountMutation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B3D216D61E0007F7547 /* UpdateUserAccountMutation.swift */; };
D6ED386A1F796C26006CAAE9 /* GraphCategoriesEnvelopeLenses.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED38691F796C26006CAAE9 /* GraphCategoriesEnvelopeLenses.swift */; };
@@ -1056,6 +1056,10 @@
D7237099211A3DA9001EA4CA /* SettingsFollowCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7237097211A3925001EA4CA /* SettingsFollowCell.swift */; };
D7417CD620BF12F4004DABA6 /* ExportDataEnvelope.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7417CD520BF12F4004DABA6 /* ExportDataEnvelope.swift */; };
D7417D0E20BF4833004DABA6 /* ExportStateEnvelopeTemplates.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7417D0D20BF4833004DABA6 /* ExportStateEnvelopeTemplates.swift */; };
+ D74E66B0212B7AB500C61708 /* SettingsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */; };
+ D74E6758212CB5A400C61708 /* SettingsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74E6757212CB5A400C61708 /* SettingsViewControllerTests.swift */; };
+ D770DE75217E598C00B5319A /* AddNewCardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D770DE3D217E339500B5319A /* AddNewCardViewController.swift */; };
+ D770DE78217E876000B5319A /* AddNewCardViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D770DE76217E874F00B5319A /* AddNewCardViewControllerTests.swift */; };
D770DDE8217D729300B5319A /* UserCurrencyTemplates.swift in Sources */ = {isa = PBXBuildFile; fileRef = D770DDE7217D729300B5319A /* UserCurrencyTemplates.swift */; };
D770DE75217E598C00B5319A /* AddNewCardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D770DE3D217E339500B5319A /* AddNewCardViewController.swift */; };
D770DE78217E876000B5319A /* AddNewCardViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D770DE76217E874F00B5319A /* AddNewCardViewControllerTests.swift */; };
@@ -2762,7 +2766,7 @@
D6DC653221768B6E008CF69C /* ChangeEmailViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewModel.swift; sourceTree = ""; };
D6DC65512178CDDC008CF69C /* GraphUserEmailTemplate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphUserEmailTemplate.swift; sourceTree = ""; };
D6ED1B36216D0C64007F7547 /* ChangeEmailViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewModelTests.swift; sourceTree = ""; };
- D6ED1B38216D50BE007F7547 /* GraphUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphUser.swift; sourceTree = ""; };
+ D6ED1B38216D50BE007F7547 /* UserEmailFields.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserEmailFields.swift; sourceTree = ""; };
D6ED1B3A216D525B007F7547 /* ChangeEmailInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailInput.swift; sourceTree = ""; };
D6ED1B3D216D61E0007F7547 /* UpdateUserAccountMutation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateUserAccountMutation.swift; sourceTree = ""; };
D6ED38691F796C26006CAAE9 /* GraphCategoriesEnvelopeLenses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphCategoriesEnvelopeLenses.swift; sourceTree = ""; };
@@ -2785,6 +2789,8 @@
D7417D0D20BF4833004DABA6 /* ExportStateEnvelopeTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportStateEnvelopeTemplates.swift; sourceTree = ""; };
D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewControllerTests.swift; sourceTree = ""; };
D74E6757212CB5A400C61708 /* SettingsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewControllerTests.swift; sourceTree = ""; };
+ D770DE3D217E339500B5319A /* AddNewCardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewCardViewController.swift; sourceTree = ""; };
+ D770DE76217E874F00B5319A /* AddNewCardViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewCardViewControllerTests.swift; sourceTree = ""; };
D76E9BEE2174EF580049F64E /* SettingsCurrencyCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsCurrencyCellViewModel.swift; sourceTree = ""; };
D770DDE7217D729300B5319A /* UserCurrencyTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserCurrencyTemplates.swift; sourceTree = ""; };
D770DE3D217E339500B5319A /* AddNewCardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewCardViewController.swift; sourceTree = ""; };
@@ -4254,6 +4260,7 @@
D01587921EEB2ED6006E7684 /* FindFriendsEnvelopeTests.swift */,
D01587931EEB2ED6006E7684 /* FriendStatsEnvelope.swift */,
D01587941EEB2ED6006E7684 /* FriendStatsEnvelopeTests.swift */,
+ D6ED1B38216D50BE007F7547 /* UserEmailFields.swift */,
D002CAE4218CF951009783F2 /* GraphMutationWatchProjectResponseEnvelope.swift */,
D6ED1B38216D50BE007F7547 /* GraphUser.swift */,
D01587951EEB2ED6006E7684 /* Item.swift */,
@@ -6399,7 +6406,7 @@
D015888D1EEB2ED7006E7684 /* ConfigLenses.swift in Sources */,
D0158A1E1EEB30A2006E7684 /* ProjectStatsEnvelope.FundingDateStatsTemplates.swift in Sources */,
D015899B1EEB2ED7006E7684 /* Service.swift in Sources */,
- D6ED1B39216D50BE007F7547 /* GraphUser.swift in Sources */,
+ D6ED1B39216D50BE007F7547 /* UserEmailFields.swift in Sources */,
D01588731EEB2ED7006E7684 /* FindFriendsEnvelope.swift in Sources */,
D63BBD31217F7212007E01F0 /* UserCreditCard.swift in Sources */,
D01588A51EEB2ED7006E7684 /* Project.DatesLenses.swift in Sources */,
diff --git a/KsApi/GraphSchema.swift b/KsApi/GraphSchema.swift
index d72c3f6777..e429de90ec 100644
--- a/KsApi/GraphSchema.swift
+++ b/KsApi/GraphSchema.swift
@@ -207,6 +207,7 @@ public enum Query {
case id
case image(alias: String, width: Int)
case imageUrl(alias: String, blur: Bool, width: Int)
+ case isEmailDeliverable
case isEmailVerified
case isFollowing
case isSocializing
@@ -395,6 +396,7 @@ extension Query.User: QueryType {
case .id: return "id"
case let .image(alias, width): return "\(alias): imageUrl(width: \(width))"
case let .imageUrl(alias, blur, width): return "\(alias): imageUrl(blur: \(blur), width: \(width))"
+ case .isEmailDeliverable: return "isDeliverable"
case .isEmailVerified: return "isEmailVerified"
case .isFollowing: return "isFollowing"
case .isSocializing: return "isSocializing"
diff --git a/KsApi/MockService.swift b/KsApi/MockService.swift
index 0134e5119e..0a792b703a 100644
--- a/KsApi/MockService.swift
+++ b/KsApi/MockService.swift
@@ -15,7 +15,7 @@ internal struct MockService: ServiceType {
fileprivate let changeCurrencyError: GraphError?
fileprivate let changeEmailError: GraphError?
- fileprivate let changeEmailResponse: UserEnvelope?
+ fileprivate let changeEmailResponse: UserEnvelope?
fileprivate let changePasswordError: GraphError?
@@ -60,7 +60,7 @@ internal struct MockService: ServiceType {
fileprivate let fetchDraftError: ErrorEnvelope?
fileprivate let fetchGraphCurrencyResponse: UserCurrency?
- fileprivate let fetchGraphUserEmailResponse: GraphUserEmail?
+ fileprivate let fetchGraphUserEmailResponse: UserEmailFields?
fileprivate let fetchGraphCreditCardsResponse: UserEnvelope?
fileprivate let fetchGraphCreditCardsError: GraphError?
@@ -175,7 +175,7 @@ internal struct MockService: ServiceType {
currency: String = "USD",
buildVersion: String = "1",
changeEmailError: GraphError? = nil,
- changeEmailResponse: UserEnvelope? = UserEnvelope(
+ changeEmailResponse: UserEnvelope? = UserEnvelope(
me: .template
),
changePasswordError: GraphError? = nil,
@@ -207,7 +207,7 @@ internal struct MockService: ServiceType {
exportDataError: ErrorEnvelope? = nil,
fetchDraftResponse: UpdateDraft? = nil,
fetchDraftError: ErrorEnvelope? = nil,
- fetchGraphUserEmailResponse: GraphUserEmail? = nil,
+ fetchGraphUserEmailResponse: UserEmailFields? = nil,
fetchGraphCurrencyResponse: UserCurrency? = nil,
addAttachmentResponse: UpdateDraft.Image? = nil,
addAttachmentError: ErrorEnvelope? = nil,
@@ -642,9 +642,9 @@ internal struct MockService: ServiceType {
)
}
- internal func fetchGraphUserEmail(query: NonEmptySet)
- -> SignalProducer, GraphError> {
- return SignalProducer(value: changeEmailResponse ?? UserEnvelope(me: .template))
+ internal func fetchGraphUserEmailFields(query: NonEmptySet)
+ -> SignalProducer, GraphError> {
+ return SignalProducer(value: changeEmailResponse ?? UserEnvelope(me: .template))
}
internal func fetchGraphCurrency(query: NonEmptySet)
diff --git a/KsApi/Service.swift b/KsApi/Service.swift
index 29147d1cad..3adbee39c7 100644
--- a/KsApi/Service.swift
+++ b/KsApi/Service.swift
@@ -218,8 +218,8 @@ public struct Service: ServiceType {
return fetch(query: query)
}
- public func fetchGraphUserEmail(query: NonEmptySet)
- -> SignalProducer, GraphError> {
+ public func fetchGraphUserEmailFields(query: NonEmptySet)
+ -> SignalProducer, GraphError> {
return fetch(query: query)
}
diff --git a/KsApi/ServiceType.swift b/KsApi/ServiceType.swift
index 6ad4e4b14a..e58cbade66 100644
--- a/KsApi/ServiceType.swift
+++ b/KsApi/ServiceType.swift
@@ -128,9 +128,9 @@ public protocol ServiceType {
func fetchGraphCurrency(query: NonEmptySet)
-> SignalProducer, GraphError>
- /// Fetch User's email objects using graphQL.
- func fetchGraphUserEmail(query: NonEmptySet)
- -> SignalProducer, GraphError>
+ /// Fetch User's email fields object using graphQL.
+ func fetchGraphUserEmailFields(query: NonEmptySet)
+ -> SignalProducer, GraphError>
/// Fetches all of the messages in a particular message thread.
func fetchMessageThread(messageThreadId: Int)
diff --git a/KsApi/models/GraphUser.swift b/KsApi/models/GraphUser.swift
deleted file mode 100644
index 0380676290..0000000000
--- a/KsApi/models/GraphUser.swift
+++ /dev/null
@@ -1,6 +0,0 @@
-import Foundation
-
-public struct GraphUserEmail: Swift.Decodable {
-
- public let email: String
-}
diff --git a/KsApi/models/UserEmailFields.swift b/KsApi/models/UserEmailFields.swift
new file mode 100644
index 0000000000..262637bc06
--- /dev/null
+++ b/KsApi/models/UserEmailFields.swift
@@ -0,0 +1,7 @@
+import Foundation
+
+public struct UserEmailFields: Swift.Decodable {
+ public private(set) var email: String
+ public private(set) var isEmailVerified: Bool?
+ public private(set) var isDeliverable: Bool?
+}
diff --git a/KsApi/models/templates/GraphUserEmailTemplate.swift b/KsApi/models/templates/GraphUserEmailTemplate.swift
index 379a9c7898..6893dd34ab 100644
--- a/KsApi/models/templates/GraphUserEmailTemplate.swift
+++ b/KsApi/models/templates/GraphUserEmailTemplate.swift
@@ -1,6 +1,7 @@
import Foundation
-extension GraphUserEmail {
-
- internal static let template = GraphUserEmail(email: "ksr@kickstarter.com")
+extension UserEmailFields {
+ internal static let template = UserEmailFields(email: "ksr@kickstarter.com",
+ isEmailVerified: true,
+ isDeliverable: true)
}
diff --git a/Library/Strings.swift b/Library/Strings.swift
index caab9125d4..91900db4eb 100644
--- a/Library/Strings.swift
+++ b/Library/Strings.swift
@@ -534,6 +534,23 @@ public enum Strings {
substitutions: [:]
)
}
+ /**
+ "Are you sure you wish to remove this card from your payment method options?"
+
+ - **en**: "Are you sure you wish to remove this card from your payment method options?"
+ - **de**: "Are you sure you wish to remove this card from your payment method options?"
+ - **es**: "Are you sure you wish to remove this card from your payment method options?"
+ - **fr**: "Are you sure you wish to remove this card from your payment method options?"
+ - **ja**: "Are you sure you wish to remove this card from your payment method options?"
+ */
+ public static func Are_you_sure_you_wish_to_remove_this_card() -> String {
+ return localizedString(
+ key: "Are_you_sure_you_wish_to_remove_this_card",
+ defaultValue: "Are you sure you wish to remove this card from your payment method options?",
+ count: nil,
+ substitutions: [:]
+ )
+ }
/**
"Ask me anything"
@@ -4079,6 +4096,23 @@ with friends."
substitutions: [:]
)
}
+ /**
+ "New email"
+
+ - **en**: "New email"
+ - **de**: "New email"
+ - **es**: "New email"
+ - **fr**: "New email"
+ - **ja**: "New email"
+ */
+ public static func New_email() -> String {
+ return localizedString(
+ key: "New_email",
+ defaultValue: "New email",
+ count: nil,
+ substitutions: [:]
+ )
+ }
/**
"New password"
@@ -4215,6 +4249,23 @@ with friends."
substitutions: [:]
)
}
+ /**
+ "No, nevermind"
+
+ - **en**: "No, nevermind"
+ - **de**: "No, nevermind"
+ - **es**: "No, nevermind"
+ - **fr**: "No, nevermind"
+ - **ja**: "No, nevermind"
+ */
+ public static func No_nevermind() -> String {
+ return localizedString(
+ key: "No_nevermind",
+ defaultValue: "No, nevermind",
+ count: nil,
+ substitutions: [:]
+ )
+ }
/**
"No one has posted an update yet."
@@ -5547,6 +5598,23 @@ daring ideas."
substitutions: ["creator_name": creator_name]
)
}
+ /**
+ "Remove this card"
+
+ - **en**: "Remove this card"
+ - **de**: "Remove this card"
+ - **es**: "Remove this card"
+ - **fr**: "Remove this card"
+ - **ja**: "Remove this card"
+ */
+ public static func Remove_this_card() -> String {
+ return localizedString(
+ key: "Remove_this_card",
+ defaultValue: "Remove this card",
+ count: nil,
+ substitutions: [:]
+ )
+ }
/**
"Replay"
@@ -7476,6 +7544,23 @@ Veuillez réessayer ultérieurement."
substitutions: [:]
)
}
+ /**
+ "Yes, remove"
+
+ - **en**: "Yes, remove"
+ - **de**: "Yes, remove"
+ - **es**: "Yes, remove"
+ - **fr**: "Yes, remove"
+ - **ja**: "Yes, remove"
+ */
+ public static func Yes_remove() -> String {
+ return localizedString(
+ key: "Yes_remove",
+ defaultValue: "Yes, remove",
+ count: nil,
+ substitutions: [:]
+ )
+ }
/**
"Yes, turn off"
diff --git a/Library/ViewModels/ChangeEmailViewModel.swift b/Library/ViewModels/ChangeEmailViewModel.swift
index 2df4ae3962..5abd508c22 100644
--- a/Library/ViewModels/ChangeEmailViewModel.swift
+++ b/Library/ViewModels/ChangeEmailViewModel.swift
@@ -2,7 +2,6 @@ import KsApi
import Prelude
import ReactiveSwift
import Result
-import UIKit
public protocol ChangeEmailViewModelInputs {
func emailFieldDidEndEditing(email: String?)
@@ -27,15 +26,17 @@ public protocol ChangeEmailViewModelOutputs {
var didSendVerificationEmail: Signal { get }
var dismissKeyboard: Signal { get }
var emailText: Signal { get }
- var messageBannerViewIsHidden: Signal { get }
+ var messageLabelViewHidden: Signal { get }
var onePasswordButtonIsHidden: Signal { get }
var onePasswordFindLoginForURLString: Signal { get }
var passwordText: Signal { get }
var passwordFieldBecomeFirstResponder: Signal { get }
- var resendVerificationStackViewIsHidden: Signal { get }
+ var resendVerificationEmailViewIsHidden: Signal { get }
var resetFields: Signal { get }
var saveButtonIsEnabled: Signal { get }
var shouldSubmitForm: Signal { get }
+ var unverifiedEmailLabelHidden: Signal { get }
+ var warningMessageLabelHidden: Signal { get }
var verificationEmailButtonTitle: Signal { get }
}
@@ -46,7 +47,6 @@ public protocol ChangeEmailViewModelType {
public final class ChangeEmailViewModel: ChangeEmailViewModelType, ChangeEmailViewModelInputs,
ChangeEmailViewModelOutputs {
-
public init() {
let changeEmailEvent = Signal.merge(
@@ -66,7 +66,9 @@ ChangeEmailViewModelOutputs {
changeEmailEvent.values().ignoreValues()
)
.switchMap { _ in
- AppEnvironment.current.apiService.fetchGraphUserEmail(query: UserQueries.email.query)
+ AppEnvironment.current
+ .apiService
+ .fetchGraphUserEmailFields(query: NonEmptySet(Query.user(userEmailQueryFields())))
.ksr_delay(AppEnvironment.current.apiDelayInterval, on: AppEnvironment.current.scheduler)
.materialize()
}
@@ -85,15 +87,31 @@ ChangeEmailViewModelOutputs {
self.emailText = userEmailEvent.values().map { $0.me.email }
- self.resendVerificationStackViewIsHidden = changeEmailEvent.values().ignoreValues().mapConst(false)
+ let isEmailVerified = userEmailEvent.values().map { $0.me.isEmailVerified }.skipNil()
+ let isEmailDeliverable = userEmailEvent.values().map { $0.me.isDeliverable }.skipNil()
+
+ self.resendVerificationEmailViewIsHidden = Signal.combineLatest(isEmailVerified, isEmailDeliverable)
+ .map { $0 && $1 }
+
+ self.unverifiedEmailLabelHidden = Signal
+ .combineLatest(isEmailVerified, isEmailDeliverable)
+ .map { isEmailVerified, isEmailDeliverable -> Bool in
+ guard isEmailVerified else { return !isEmailDeliverable }
+
+ return true
+ }
+
+ self.warningMessageLabelHidden = isEmailDeliverable
+
+ self.messageLabelViewHidden = Signal
+ .merge(self.unverifiedEmailLabelHidden, self.warningMessageLabelHidden)
+ .filter(isFalse)
self.dismissKeyboard = Signal.merge(
self.changePasswordProperty.signal.ignoreValues(),
self.saveButtonTappedProperty.signal.ignoreValues()
)
- self.messageBannerViewIsHidden = viewDidLoadProperty.signal.mapConst(false)
-
self.saveButtonIsEnabled = Signal.combineLatest (
self.emailText,
self.newEmailProperty.signal.skipNil(),
@@ -142,7 +160,7 @@ ChangeEmailViewModelOutputs {
self.shouldSubmitForm.signal.mapConst(true),
self.didChangeEmail.mapConst(false),
self.didFailToChangeEmail.mapConst(false)
- ).logEvents(identifier: "\n\n EMITE \n\n")
+ )
}
private let newEmailProperty = MutableProperty(nil)
@@ -216,16 +234,18 @@ ChangeEmailViewModelOutputs {
public let didSendVerificationEmail: Signal
public let dismissKeyboard: Signal
public let emailText: Signal
- public let messageBannerViewIsHidden: Signal
+ public let messageLabelViewHidden: Signal
public let onePasswordButtonIsHidden: Signal
public let onePasswordFindLoginForURLString: Signal
public let passwordFieldBecomeFirstResponder: Signal
public let passwordText: Signal
- public let resendVerificationStackViewIsHidden: Signal
+ public let resendVerificationEmailViewIsHidden: Signal
public let resetFields: Signal
public let saveButtonIsEnabled: Signal
public let shouldSubmitForm: Signal
+ public let unverifiedEmailLabelHidden: Signal
public let verificationEmailButtonTitle: Signal
+ public let warningMessageLabelHidden: Signal
public var inputs: ChangeEmailViewModelInputs {
return self
diff --git a/Library/ViewModels/ChangeEmailViewModelTests.swift b/Library/ViewModels/ChangeEmailViewModelTests.swift
index 3820baa983..4b4b181cde 100644
--- a/Library/ViewModels/ChangeEmailViewModelTests.swift
+++ b/Library/ViewModels/ChangeEmailViewModelTests.swift
@@ -23,10 +23,12 @@ final class ChangeEmailViewModelTests: TestCase {
private let passwordFieldBecomeFirstResponder = TestObserver()
private let resetFields = TestObserver()
private let shouldSubmitForm = TestObserver()
-
+ private let messageLabelViewHiddenObserver = TestObserver()
private let passwordText = TestObserver()
- private let resendVerificationStackViewIsHidden = TestObserver()
+ private let resendVerificationEmailViewIsHiddenObserver = TestObserver()
private let saveButtonIsEnabled = TestObserver()
+ private let unverifiedEmailLabelHiddenObserver = TestObserver()
+ private let warningMessageLabelHiddenObserver = TestObserver()
private let verificationEmailButtonTitle = TestObserver()
override func setUp() {
@@ -38,12 +40,13 @@ final class ChangeEmailViewModelTests: TestCase {
self.vm.outputs.emailText.observe(self.emailText.observer)
self.vm.outputs.dismissKeyboard.observe(self.dismissKeyboard.observer)
+ self.vm.outputs.messageLabelViewHidden.observe(self.messageLabelViewHiddenObserver.observer)
self.vm.outputs.onePasswordButtonIsHidden.observe(self.onePasswordButtonHidden.observer)
self.vm.outputs.onePasswordFindLoginForURLString.observe(self.onePasswordFindLoginForURLString.observer)
self.vm.outputs.passwordFieldBecomeFirstResponder.observe(self.passwordFieldBecomeFirstResponder.observer)
self.vm.outputs.passwordText.observe(self.passwordText.observer)
- self.vm.outputs.resendVerificationStackViewIsHidden.observe(
- self.resendVerificationStackViewIsHidden.observer
+ self.vm.outputs.resendVerificationEmailViewIsHidden.observe(
+ self.resendVerificationEmailViewIsHiddenObserver.observer
)
self.vm.outputs.didSendVerificationEmail.observe(
self.didSendVerificationEmail.observer
@@ -54,6 +57,8 @@ final class ChangeEmailViewModelTests: TestCase {
self.vm.outputs.resetFields.observe(self.resetFields.observer)
self.vm.outputs.saveButtonIsEnabled.observe(self.saveButtonIsEnabled.observer)
self.vm.outputs.shouldSubmitForm.observe(self.shouldSubmitForm.observer)
+ self.vm.outputs.unverifiedEmailLabelHidden.observe(self.unverifiedEmailLabelHiddenObserver.observer)
+ self.vm.outputs.warningMessageLabelHidden.observe(self.warningMessageLabelHiddenObserver.observer)
self.vm.outputs.verificationEmailButtonTitle.observe(self.verificationEmailButtonTitle.observer)
}
@@ -118,7 +123,7 @@ final class ChangeEmailViewModelTests: TestCase {
func testEmailText_AfterFetchingUsersEmail() {
- let response = UserEnvelope(me: .template)
+ let response = UserEnvelope(me: .template)
withEnvironment(apiService: MockService(changeEmailResponse: response)) {
@@ -140,7 +145,7 @@ final class ChangeEmailViewModelTests: TestCase {
func testSaveButtonEnabledStatus() {
- let response = UserEnvelope(me: .template)
+ let response = UserEnvelope(me: .template)
withEnvironment(apiService: MockService(changeEmailResponse: response)) {
@@ -162,7 +167,7 @@ final class ChangeEmailViewModelTests: TestCase {
func testSaveButtonEnablesAfter_OnePasswordPrefillsField() {
- let response = UserEnvelope(me: .template)
+ let response = UserEnvelope(me: .template)
withEnvironment(apiService: MockService(changeEmailResponse: response)) {
@@ -178,20 +183,103 @@ final class ChangeEmailViewModelTests: TestCase {
}
}
- func testResendVerificationStackViewIsHidden_IfEmailIsVerified() {
- self.resendVerificationStackViewIsHidden.assertDidNotEmitValue()
+ func testResendVerificationViewIsHidden_IfEmailIsVerified() {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.resendVerificationEmailViewIsHiddenObserver
+ .assertValues([true], "Email is deliverable and verified")
}
- func testResendVerificationStackViewIsNotHidden_IfEmailIsNotVerified() {
- self.resendVerificationStackViewIsHidden.assertDidNotEmitValue()
+ func testResendVerificationViewIsNotHidden_IfEmailIsNotVerified() {
+ let userEmailFields = UserEmailFields.template
+ |> \.isEmailVerified .~ false
+
+ let mockService = MockService(changeEmailResponse: UserEnvelope(me: userEmailFields))
+
+ withEnvironment(apiService: mockService) {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.resendVerificationEmailViewIsHiddenObserver.assertValues([false], "Email is unverified")
+ }
}
- func testResendVerificationStackViewAppears_AfterChangingEmail() {
+ func testResendVerificationViewIsNotHidden_IfEmailIsUndeliverable() {
+ let userEmailFields = UserEmailFields.template
+ |> \.isDeliverable .~ false
+
+ let mockService = MockService(changeEmailResponse: UserEnvelope(me: userEmailFields))
+
+ withEnvironment(apiService: mockService) {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.resendVerificationEmailViewIsHiddenObserver
+ .assertValues([false], "Email is undeliverable")
+ }
+ }
+
+ func testWarningMessageLabel_isHidden() {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.warningMessageLabelHiddenObserver.assertValues([true], "Email is deliverable")
+ }
+
+ func testWarningMessageLabel_isNotHidden_whenEmailIsNotDeliverable() {
+ let userEmailFields = UserEmailFields.template
+ |> \.isDeliverable .~ false
+
+ withEnvironment(apiService: MockService(changeEmailResponse: UserEnvelope(me: userEmailFields))) {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.warningMessageLabelHiddenObserver
+ .assertValues([false], "Email is not deliverable")
+ }
+ }
+
+ func testUnverifiedEmailLabel_isHidden_whenEmailIsVerified() {
+ self.vm.inputs.viewDidLoad()
- self.vm.inputs.submitForm(newEmail: "ksr@kickstarter.com", password: "123456")
self.scheduler.advance()
- self.resendVerificationStackViewIsHidden.assertValues([false])
+ self.unverifiedEmailLabelHiddenObserver.assertValues([true], "Email is verified & deliverable")
+ }
+
+ func testUnverifiedEmailLabel_isNotHidden_whenEmailIsUnverified() {
+ let userEmailFields = UserEmailFields.template
+ |> \.isEmailVerified .~ false
+
+ withEnvironment(apiService: MockService(changeEmailResponse: UserEnvelope(me: userEmailFields))) {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.unverifiedEmailLabelHiddenObserver
+ .assertValues([false], "Email is not verified, but deliverable")
+ }
+ }
+
+ func testUnverifiedEmailLabel_isHidden_whenEmailIsUnverifiedAndUndeliverable() {
+ let userEmailFields = UserEmailFields.template
+ |> \.isDeliverable .~ false
+ |> \.isEmailVerified .~ false
+
+ withEnvironment(apiService: MockService(changeEmailResponse: UserEnvelope(me: userEmailFields))) {
+ self.vm.inputs.viewDidLoad()
+
+ self.scheduler.advance()
+
+ self.unverifiedEmailLabelHiddenObserver
+ .assertValues([true], "Email is not verified, but deliverable message takes precendent")
+ }
}
func testDidFailToSendVerificationEmailEmits_OnFailure() {
@@ -208,7 +296,6 @@ final class ChangeEmailViewModelTests: TestCase {
}
func testDidSendVerificationEmailEmits_OnSuccess() {
-
self.vm.inputs.resendVerificationEmailButtonTapped()
self.scheduler.advance()
@@ -216,7 +303,6 @@ final class ChangeEmailViewModelTests: TestCase {
}
func testVerificationEmailButtonTitle_Backer() {
-
let user = User.template
|> \.stats.createdProjectsCount .~ 0
@@ -265,18 +351,13 @@ final class ChangeEmailViewModelTests: TestCase {
}
func testFieldsResetWithEmptyString_AfterChangingEmail() {
+ self.vm.inputs.submitForm(newEmail: "ksr@kickstarter.com", password: "123456")
+ self.scheduler.advance()
- withEnvironment(apiService: MockService()) {
-
- self.vm.inputs.submitForm(newEmail: "ksr@kickstarter.com", password: "123456")
- self.scheduler.advance()
-
- self.resetFields.assertValue("")
- }
+ self.resetFields.assertValue("")
}
func testShouldSubmitFormEmits_WhenTappingSaveOrGo() {
-
self.vm.inputs.viewDidLoad()
self.shouldSubmitForm.assertValueCount(0)
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_pad@2x.png
index f5fe9f6bfe..5a4b62f555 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4_7inch@2x.png
index 339f848375..fbcda498d6 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4inch@2x.png
index 782cf5eeeb..2fd1eb31b4 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_5inch@2x.png
index b9ef0fa52b..cc995097ac 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_8inch@2x.png
index 0414e49b4c..6e1996de93 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_de_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_pad@2x.png
index 69d61bfaa8..7f4012ac7d 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4_7inch@2x.png
index bf706550f9..ad70105aea 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4inch@2x.png
index 447b5867a3..b7f11c736a 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_5inch@2x.png
index f19fa07bf6..9f4e551ac5 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_8inch@2x.png
index 2003199168..83623463e1 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_en_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_pad@2x.png
index 0a6ecd6942..6d84491d8c 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4_7inch@2x.png
index 1a8f377e6f..2033981bfc 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4inch@2x.png
index 3127e4a1e8..956367c727 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_5inch@2x.png
index c728638922..e476d9f25c 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_8inch@2x.png
index 4062461ce3..932097a754 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_es_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_pad@2x.png
index 5274ae4a2f..7f8779673c 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4_7inch@2x.png
index e52c278ddd..889e0c01cd 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4inch@2x.png
index 2af48b8522..59c02f52ae 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_5inch@2x.png
index 42588fca49..ccafc6fcdd 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_8inch@2x.png
index f647f6a301..7c845d6cda 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_fr_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_pad@2x.png
index 338b21571b..7f781fdf70 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4_7inch@2x.png
index 3db1cfcbf9..6dc9340118 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4inch@2x.png
index e66d166a93..d86a75ebe7 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_5inch@2x.png
index 862a7652c4..baff7ad53e 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_8inch@2x.png
index 7958550d99..b47210ea50 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.AddNewCardViewControllerTests/testAddNewCard_lang_ja_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_pad@2x.png
new file mode 100644
index 0000000000..765a4c31e0
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..8b5893863c
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4inch@2x.png
new file mode 100644
index 0000000000..01df722413
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..16e772555f
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..9fdbe2f564
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_de_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_pad@2x.png
new file mode 100644
index 0000000000..6664c56f3d
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..ea9fa4da2b
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4inch@2x.png
new file mode 100644
index 0000000000..c14b039276
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..6781a82ecb
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..c789fe42dc
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_en_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_pad@2x.png
new file mode 100644
index 0000000000..0b7b532bf4
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..33ee7a74bc
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4inch@2x.png
new file mode 100644
index 0000000000..094d48231d
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..90854363e1
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..bcea466c07
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_es_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_pad@2x.png
new file mode 100644
index 0000000000..664bcdc2a2
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..3117fbd59b
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4inch@2x.png
new file mode 100644
index 0000000000..3f85a6a796
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..39b6adcf91
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..9d6981ab36
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_fr_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_pad@2x.png
new file mode 100644
index 0000000000..01e5f80dbb
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..6854224684
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4inch@2x.png
new file mode 100644
index 0000000000..bb6c38b60f
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..215222d47e
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..d6d8854a38
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_undeliverableEmail_lang_ja_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_pad@2x.png
new file mode 100644
index 0000000000..5e2c6fc922
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..9f203eab39
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4inch@2x.png
new file mode 100644
index 0000000000..a9efe4c72b
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..7f779b0981
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..5816cc9728
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_de_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_pad@2x.png
new file mode 100644
index 0000000000..78e2a602c0
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..74f2a818e5
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4inch@2x.png
new file mode 100644
index 0000000000..1ec59b1c64
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..b3bd00054c
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..214711f7e6
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_en_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_pad@2x.png
new file mode 100644
index 0000000000..3bda5b9ef0
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..c9e70345b4
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4inch@2x.png
new file mode 100644
index 0000000000..1304b2a794
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..2a7a173e55
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..6f5caa7de5
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_es_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_pad@2x.png
new file mode 100644
index 0000000000..ab95080ce5
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..2b84a86e09
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4inch@2x.png
new file mode 100644
index 0000000000..0833547fb8
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..7b2ba92ffb
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..ee33045fb1
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_fr_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_pad@2x.png
new file mode 100644
index 0000000000..c504623bac
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..406dff822d
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4inch@2x.png
new file mode 100644
index 0000000000..6437467516
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..355d61e877
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..9f00161ba1
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_isCreator_lang_ja_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_pad@2x.png
new file mode 100644
index 0000000000..ecb3ae78ad
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..3d56c6bc9b
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4inch@2x.png
new file mode 100644
index 0000000000..aee9c3691d
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..1e0d93c515
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..bb791f637c
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_de_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_pad@2x.png
new file mode 100644
index 0000000000..223eb4741f
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..cf07db0604
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4inch@2x.png
new file mode 100644
index 0000000000..cdfdcae092
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..3841919cd3
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..9be7752b99
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_en_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_pad@2x.png
new file mode 100644
index 0000000000..e5055956ca
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..8e7c0b5da0
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4inch@2x.png
new file mode 100644
index 0000000000..a2df5dce35
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..92ac0338b1
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..b8f60ba760
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_es_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_pad@2x.png
new file mode 100644
index 0000000000..e2798a0d7b
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..51dababff2
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4inch@2x.png
new file mode 100644
index 0000000000..24ff97f50e
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..a404dfbc4c
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..9395614348
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_fr_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_pad@2x.png
new file mode 100644
index 0000000000..24508b8bbe
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4_7inch@2x.png
new file mode 100644
index 0000000000..4ed5221c31
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4inch@2x.png
new file mode 100644
index 0000000000..d6cd199c9a
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_5inch@2x.png
new file mode 100644
index 0000000000..dbb900e4a0
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_8inch@2x.png
new file mode 100644
index 0000000000..25282a4f9e
Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmailScreen_unverifiedEmail_lang_ja_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_pad@2x.png
index e843430d6f..6a3f6c2fb4 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4_7inch@2x.png
index 7af2d935d8..4f74d71703 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4inch@2x.png
index cc5b101aee..cb3b81fe67 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_5inch@2x.png
index cd9014f3b9..158094a75e 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_8inch@2x.png
index 10393d692c..25fcba0587 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_de_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_pad@2x.png
index 564f952b79..769c795104 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4_7inch@2x.png
index 3caf1af901..cd998fbf51 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4inch@2x.png
index dfc1ca7611..59a7419b5c 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_5inch@2x.png
index 7f759f89cb..d5c7421343 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_8inch@2x.png
index 361568fb7a..ae2f624a4d 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_en_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_pad@2x.png
index 4c71e3bd09..ab74097ac6 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4_7inch@2x.png
index 2b3d59faaf..93e0df880f 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4inch@2x.png
index a0b0ef54e9..39bd0fa48d 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_5inch@2x.png
index 81199a3437..babdbc4c01 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_8inch@2x.png
index 325904a2ea..0d95a12ef4 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_es_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_pad@2x.png
index 80d61edc12..2b7664637f 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4_7inch@2x.png
index ba46585b47..a7b3fccf5c 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4inch@2x.png
index 2919f3d17e..90152da7a1 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_5inch@2x.png
index 57c6718474..3684fdbdd9 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_8inch@2x.png
index d080469dc6..14c6c5ecc6 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_fr_device_phone5_8inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_pad@2x.png
index a5fdc5c055..40cb17b136 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_pad@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_pad@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4_7inch@2x.png
index df43e19d1b..4986998ddf 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4_7inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4_7inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4inch@2x.png
index a2964d6d49..f58f8091d3 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone4inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_5inch@2x.png
index 840f198ea6..f59df1e57b 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_5inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_5inch@2x.png differ
diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_8inch@2x.png
index 692937d9f1..7c59918342 100644
Binary files a/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_8inch@2x.png and b/Screenshots/_64/Kickstarter_Framework_iOSTests.ChangeEmailViewControllerTests/testChangeEmail_lang_ja_device_phone5_8inch@2x.png differ