pull/3/head
Niels Andriesse 5 years ago
parent 2cb1ddbdad
commit 41b6988f50

@ -1,13 +1,13 @@
final class OnboardingAccountDetailsViewController : OnboardingBaseViewController {
private lazy var displayNameTextField: UITextField = {
private lazy var userNameTextField: UITextField = {
let result = UITextField()
result.textColor = Theme.primaryColor
result.font = UIFont.ows_dynamicTypeBodyClamped
result.textAlignment = .center
result.placeholder = NSLocalizedString("Display Name (Optional)", comment: "")
result.accessibilityIdentifier = "onboarding.accountDetailsStep.displayNameTextField"
result.accessibilityIdentifier = "onboarding.accountDetailsStep.userNameTextField"
return result
}()
@ -22,8 +22,8 @@ final class OnboardingAccountDetailsViewController : OnboardingBaseViewControlle
return result
}()
private var normalizedName: String? {
let result = displayNameTextField.text!.ows_stripped()
private var normalizedUserName: String? {
let result = userNameTextField.text!.ows_stripped()
return !result.isEmpty ? result : nil
}
@ -46,7 +46,7 @@ final class OnboardingAccountDetailsViewController : OnboardingBaseViewControlle
topSpacer,
displayNameLabel,
UIView.spacer(withHeight: 8),
displayNameTextField,
userNameTextField,
UIView.spacer(withHeight: 16),
passwordLabel,
UIView.spacer(withHeight: 8),
@ -67,15 +67,15 @@ final class OnboardingAccountDetailsViewController : OnboardingBaseViewControlle
public override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
displayNameTextField.becomeFirstResponder()
userNameTextField.becomeFirstResponder()
}
@objc private func handleNextButtonPressed() {
if let normalizedName = normalizedName {
if let normalizedName = normalizedUserName {
guard !OWSProfileManager.shared().isProfileNameTooLong(normalizedName) else {
return OWSAlerts.showErrorAlert(message: NSLocalizedString("PROFILE_VIEW_ERROR_PROFILE_NAME_TOO_LONG", comment: "Error message shown when user tries to update profile with a profile name that is too long"))
}
}
onboardingController.pushKeyPairViewController(from: self, userName: normalizedName)
onboardingController.pushKeyPairViewController(from: self, userName: normalizedUserName)
}
}

@ -42,12 +42,22 @@ final class OnboardingKeyPairViewController : OnboardingBaseViewController {
}()
private lazy var restoreStackView: UIStackView = {
let result = UIStackView(arrangedSubviews: [ mnemonicTextField, UIView.spacer(withHeight: 24), registerButton ])
let result = UIStackView(arrangedSubviews: [ errorLabel, UIView.spacer(withHeight: 32), mnemonicTextField, UIView.spacer(withHeight: 24), registerButton ])
result.accessibilityIdentifier = "onboarding.keyPairStep.restoreStackView"
result.axis = .vertical
return result
}()
private lazy var errorLabel: UILabel = {
let result = createExplanationLabel(text: "")
result.accessibilityIdentifier = "onboarding.keyPairStep.errorLabel"
result.textColor = UIColor.red
var fontTraits = result.font.fontDescriptor.symbolicTraits
fontTraits.insert(.traitBold)
result.font = UIFont(descriptor: result.font.fontDescriptor.withSymbolicTraits(fontTraits)!, size: result.font.pointSize)
return result
}()
private lazy var mnemonicTextField: UITextField = {
let result = UITextField(frame: CGRect.zero)
result.accessibilityIdentifier = "onboarding.keyPairStep.mnemonicTextField"
@ -129,16 +139,16 @@ final class OnboardingKeyPairViewController : OnboardingBaseViewController {
// MARK: Updating
private func handleModeChanged() {
UIView.animate(withDuration: 0.25) {
self.registerStackView.alpha = (self.mode == .register ? 1 : 0)
self.restoreStackView.alpha = (self.mode == .restore ? 1 : 0)
}
let registerOrRestoreButtonTitle: String = {
switch mode {
case .register: return NSLocalizedString("Register", comment: "")
case .restore: return NSLocalizedString("Restore", comment: "")
}
}()
UIView.animate(withDuration: 0.25) {
self.registerStackView.alpha = (self.mode == .register ? 1 : 0)
self.restoreStackView.alpha = (self.mode == .restore ? 1 : 0)
}
self.registerOrRestoreButton.setTitle(registerOrRestoreButtonTitle)
}
@ -180,10 +190,14 @@ final class OnboardingKeyPairViewController : OnboardingBaseViewController {
do {
let hexEncodedPrivateKey = try Mnemonic.decode(mnemonic: mnemonic)
let keyPair = ECKeyPair.generate(withHexEncodedPrivateKey: hexEncodedPrivateKey)
// TODO: Store key pair
let databaseConnection = OWSIdentityManager.shared().value(forKey: "dbConnection") as! YapDatabaseConnection
databaseConnection.setObject(keyPair, forKey: "TSStorageManagerIdentityKeyStoreIdentityKey", inCollection: OWSPrimaryStorageIdentityKeyStoreCollection)
hexEncodedPublicKey = keyPair.hexEncodedPublicKey
} catch let error {
fatalError(error.localizedDescription) // TODO: Handle
let error = error as? Mnemonic.DecodingError ?? Mnemonic.DecodingError.generic
errorLabel.text = error.description
errorLabel.isHidden = false
return
}
}
let accountManager = TSAccountManager.sharedInstance()

@ -45,6 +45,16 @@ enum Mnemonic {
enum DecodingError : Error {
case generic, inputTooShort, missingLastWord, invalidWord, verificationFailed
var description: String {
switch self {
case .generic: return NSLocalizedString("Something went wrong. Please check your mnemonic and try again.", comment: "")
case .inputTooShort: return NSLocalizedString("Looks like you didn't enter enough words. Please check your mnemonic and try again.", comment: "")
case .missingLastWord: return NSLocalizedString("You seem to be missing the last word of your mnemonic. Please check what you entered and try again.", comment: "")
case .invalidWord: return NSLocalizedString("There appears to be an invalid word in your mnemonic. Please check what you entered and try again.", comment: "")
case .verificationFailed: return NSLocalizedString("Your mnemonic couldn't be verified. Please check what you entered and try again.", comment: "")
}
}
}
static func encode(hexEncodedString string: String, language: Language = .english) -> String {

Loading…
Cancel
Save