mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2025-02-02 10:27:08 +01:00
Add button to resend email (#690)
Make it work (<- we're here) Make it right Make it fast
This commit is contained in:
parent
1f7298c6b9
commit
de87424f53
@ -41,6 +41,19 @@ final class MastodonConfirmEmailViewController: UIViewController, NeedsDependenc
|
|||||||
imageView.contentMode = .scaleAspectFit
|
imageView.contentMode = .scaleAspectFit
|
||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
let resendEmailButton: UIButton = {
|
||||||
|
var buttonConfiguration = UIButton.Configuration.plain()
|
||||||
|
buttonConfiguration.attributedTitle = try! AttributedString(markdown: "Didn't get a link? **Resend (10)**")
|
||||||
|
|
||||||
|
let button = UIButton(configuration: buttonConfiguration)
|
||||||
|
button.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
button.isEnabled = false
|
||||||
|
|
||||||
|
return button
|
||||||
|
}()
|
||||||
|
|
||||||
|
var resendButtonTimer: Timer?
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonConfirmEmailViewController {
|
extension MastodonConfirmEmailViewController {
|
||||||
@ -52,6 +65,8 @@ extension MastodonConfirmEmailViewController {
|
|||||||
|
|
||||||
subtitleLabel.text = L10n.Scene.ConfirmEmail.tapTheLinkWeEmailedToYouToVerifyYourAccount(viewModel.email)
|
subtitleLabel.text = L10n.Scene.ConfirmEmail.tapTheLinkWeEmailedToYouToVerifyYourAccount(viewModel.email)
|
||||||
|
|
||||||
|
resendEmailButton.addTarget(self, action: #selector(MastodonConfirmEmailViewController.resendButtonPressed(_:)), for: .touchUpInside)
|
||||||
|
|
||||||
// stackView
|
// stackView
|
||||||
stackView.axis = .vertical
|
stackView.axis = .vertical
|
||||||
stackView.distribution = .fill
|
stackView.distribution = .fill
|
||||||
@ -60,6 +75,7 @@ extension MastodonConfirmEmailViewController {
|
|||||||
stackView.isLayoutMarginsRelativeArrangement = true
|
stackView.isLayoutMarginsRelativeArrangement = true
|
||||||
stackView.addArrangedSubview(subtitleLabel)
|
stackView.addArrangedSubview(subtitleLabel)
|
||||||
stackView.addArrangedSubview(emailImageView)
|
stackView.addArrangedSubview(emailImageView)
|
||||||
|
stackView.addArrangedSubview(resendEmailButton)
|
||||||
emailImageView.setContentHuggingPriority(.defaultLow, for: .vertical)
|
emailImageView.setContentHuggingPriority(.defaultLow, for: .vertical)
|
||||||
emailImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
|
emailImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
|
||||||
|
|
||||||
@ -122,6 +138,41 @@ extension MastodonConfirmEmailViewController {
|
|||||||
configureMargin()
|
configureMargin()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func viewDidAppear(_ animated: Bool) {
|
||||||
|
super.viewDidAppear(animated)
|
||||||
|
|
||||||
|
// start timer
|
||||||
|
let nowIn60Seconds = Date().addingTimeInterval(10)
|
||||||
|
|
||||||
|
let timer = Timer(timeInterval: 1.0, repeats: true) { [weak self] in
|
||||||
|
guard Date() < nowIn60Seconds else {
|
||||||
|
// enable button
|
||||||
|
self?.resendEmailButton.isEnabled = true
|
||||||
|
|
||||||
|
var configuration = self?.resendEmailButton.configuration
|
||||||
|
let attributedTitle = try! AttributedString(markdown: "Didn't get a link? **Resend**")
|
||||||
|
|
||||||
|
configuration?.attributedTitle = attributedTitle
|
||||||
|
self?.resendEmailButton.configuration = configuration
|
||||||
|
self?.resendEmailButton.setNeedsUpdateConfiguration()
|
||||||
|
|
||||||
|
$0.invalidate()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: @zeitschlag Add localization
|
||||||
|
//TODO: @zeitschlag Add styling
|
||||||
|
var configuration = self?.resendEmailButton.configuration
|
||||||
|
let attributedTitle = try! AttributedString(markdown: "Didn't get a link? **Resend (\(Int(nowIn60Seconds.timeIntervalSinceNow) + 1))**")
|
||||||
|
|
||||||
|
configuration?.attributedTitle = attributedTitle
|
||||||
|
self?.resendEmailButton.configuration = configuration
|
||||||
|
self?.resendEmailButton.setNeedsUpdateConfiguration()
|
||||||
|
}
|
||||||
|
|
||||||
|
RunLoop.main.add(timer, forMode: .default)
|
||||||
|
// self.resendButtonTimer = timer
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonConfirmEmailViewController {
|
extension MastodonConfirmEmailViewController {
|
||||||
|
@ -627,8 +627,6 @@ public enum L10n {
|
|||||||
/// Check Your Inbox
|
/// Check Your Inbox
|
||||||
public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title", fallback: "Check Your Inbox")
|
public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title", fallback: "Check Your Inbox")
|
||||||
public enum Button {
|
public enum Button {
|
||||||
/// Open Email App
|
|
||||||
public static let openEmailApp = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.OpenEmailApp", fallback: "Open Email App")
|
|
||||||
/// Resend
|
/// Resend
|
||||||
public static let resend = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.Resend", fallback: "Resend")
|
public static let resend = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.Resend", fallback: "Resend")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user