From 3c5dd5738de5f14932c49d2426e6d6199b19df4d Mon Sep 17 00:00:00 2001
From: jakobsbode <jakobsbode@mi.fu-berlin.de>
Date: Fri, 26 May 2017 16:23:25 +0200
Subject: [PATCH] do not present connectionDetails, if the first time
 credentials failed in Onboarding.

---
 enzevalos_iphone/AppDelegate.swift            | 10 +++++++++-
 enzevalos_iphone/Onboarding.swift             | 18 ++++++++++++++++--
 enzevalos_iphone/de.lproj/Localizable.strings |  1 +
 enzevalos_iphone/en.lproj/Localizable.strings |  1 +
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/enzevalos_iphone/AppDelegate.swift b/enzevalos_iphone/AppDelegate.swift
index eaa8e8f0..5357a730 100644
--- a/enzevalos_iphone/AppDelegate.swift
+++ b/enzevalos_iphone/AppDelegate.swift
@@ -44,7 +44,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     }
     
     func credentialsFailed(){
-        self.window?.rootViewController = Onboarding.detailOnboarding(self.credentialCheck)
+        Onboarding.credentialFails += 1
+        if Onboarding.credentialFails >= 3 {
+            self.window?.rootViewController = Onboarding.detailOnboarding(self.credentialCheck)
+        }
+        else {
+            let contr = (Onboarding.onboarding(self.credentialCheck) as! OnboardingViewController)
+            self.window?.rootViewController = contr
+            contr.gotoLastPage()
+        }
     }
     
     func credentialsWork() {
diff --git a/enzevalos_iphone/Onboarding.swift b/enzevalos_iphone/Onboarding.swift
index 09f7eca3..690d5f9e 100644
--- a/enzevalos_iphone/Onboarding.swift
+++ b/enzevalos_iphone/Onboarding.swift
@@ -45,6 +45,8 @@ class Onboarding: NSObject {
 
     static var fail: () -> () = { Void in }
     static var work: () -> () = { Void in }
+    
+    static var credentialFails = 0
 
     static var authenticationRows: [Int: String] = [MCOAuthType.saslLogin.rawValue: "Login", MCOAuthType.saslPlain.rawValue: NSLocalizedString("NormalPassword", comment: ""), MCOAuthType.SASLSRP.rawValue: "SRP", MCOAuthType.SASLCRAMMD5.rawValue: "CRAMMD5", MCOAuthType.SASLDIGESTMD5.rawValue: "DIGESTMD5", MCOAuthType.SASLNTLM.rawValue: "NTLM", MCOAuthType.SASLGSSAPI.rawValue: "GSSAPI", MCOAuthType.saslKerberosV4.rawValue: "KerberosV4"]
     static var transportRows: [Int: String] = [MCOConnectionType.clear.rawValue: NSLocalizedString("Plaintext", comment: ""), MCOConnectionType.startTLS.rawValue: "StartTLS", MCOConnectionType.TLS.rawValue: "TLS"]
@@ -151,8 +153,15 @@ class Onboarding: NSObject {
         credentials.addSubview(password)
         credentials.addSubview(passwordUnderline)
 
-        let page3 = OnboardingContentViewController.content(withTitle: nil, body: NSLocalizedString("InsertMailAddressAndPassword", comment: ""), videoURL: nil, inputView: credentials, buttonText: NSLocalizedString("next", comment: ""), actionBlock: callback)
+        var bodyText = NSLocalizedString("InsertMailAddressAndPassword", comment: "")
+        if self.credentialFails > 0 {
+            bodyText = NSLocalizedString("WrongMailAddressOrPassword", comment: "")
+        }
+        let page3 = OnboardingContentViewController.content(withTitle: nil, body: bodyText, videoURL: nil, inputView: credentials, buttonText: NSLocalizedString("next", comment: ""), actionBlock: callback)
         page3.topPadding = 0
+        if self.credentialFails > 0 {
+            page3.bodyLabel.textColor = UIColor.orange
+        }
         //page3.onlyInputView = true
 
         //let page4 = OnboardingContentViewController.content(withTitle: NSLocalizedString("EverythingCorrect", comment: ""), body: nil, videoURL: nil, inputView: nil, buttonText: NSLocalizedString("next", comment: ""), actionBlock: callback)
@@ -163,7 +172,7 @@ class Onboarding: NSObject {
         //vc?.backgroundImage = postcardBg
         vc?.shouldFadeTransitions = true
         //vc?.shouldMaskBackground = false
-
+        
         let duration = 0.5
 
         intro2.viewWillAppearBlock = {
@@ -201,6 +210,10 @@ class Onboarding: NSObject {
             })
         }
 
+        if self.credentialFails > 0 {
+            //vc!.pageControl.currentPage = (vc?.pageControl.numberOfPages)!-1
+        }
+        
         return vc!
     }
 
@@ -609,6 +622,7 @@ class Onboarding: NSObject {
     }
 
     static func keyHandling() {
+        self.credentialFails = 0
         for encType in iterateEnum(EncryptionType.self) {
             if let enc = EnzevalosEncryptionHandler.getEncryption(encType) {
                 enc.removeAllKeys()
diff --git a/enzevalos_iphone/de.lproj/Localizable.strings b/enzevalos_iphone/de.lproj/Localizable.strings
index 18d2e2cd..21ca3628 100644
--- a/enzevalos_iphone/de.lproj/Localizable.strings
+++ b/enzevalos_iphone/de.lproj/Localizable.strings
@@ -99,6 +99,7 @@
 "TwoDaysAgo" = "Vorgestern";
 "Username" = "Nutzername";
 "WhatAShame" = "Schade!";
+"WrongMailAddressOrPassword" = "Die E-Mail-Adresse oder das Passwort waren falsch. Bitte probiere es erneut!";
 "write" = "verfassen";
 "Yesterday" = "Gestern";
 "NoFurtherMessages" = "Keine weiteren Nachrichten...";
diff --git a/enzevalos_iphone/en.lproj/Localizable.strings b/enzevalos_iphone/en.lproj/Localizable.strings
index a5f79207..7353cf27 100644
--- a/enzevalos_iphone/en.lproj/Localizable.strings
+++ b/enzevalos_iphone/en.lproj/Localizable.strings
@@ -98,6 +98,7 @@
 "TwoDaysAgo" = "2 days ago";
 "Username" = "Username";
 "WhatAShame" = "What a shame!";
+"WrongMailAddressOrPassword" = "Email address or password were wrong. Please try again!";
 "write" = "write";
 "Yesterday" = "yesterday";
 "NoFurtherMessages" = "No further messages...";
-- 
GitLab