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
|
||||
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 {
|
||||
@ -52,6 +65,8 @@ extension MastodonConfirmEmailViewController {
|
||||
|
||||
subtitleLabel.text = L10n.Scene.ConfirmEmail.tapTheLinkWeEmailedToYouToVerifyYourAccount(viewModel.email)
|
||||
|
||||
resendEmailButton.addTarget(self, action: #selector(MastodonConfirmEmailViewController.resendButtonPressed(_:)), for: .touchUpInside)
|
||||
|
||||
// stackView
|
||||
stackView.axis = .vertical
|
||||
stackView.distribution = .fill
|
||||
@ -60,6 +75,7 @@ extension MastodonConfirmEmailViewController {
|
||||
stackView.isLayoutMarginsRelativeArrangement = true
|
||||
stackView.addArrangedSubview(subtitleLabel)
|
||||
stackView.addArrangedSubview(emailImageView)
|
||||
stackView.addArrangedSubview(resendEmailButton)
|
||||
emailImageView.setContentHuggingPriority(.defaultLow, for: .vertical)
|
||||
emailImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
|
||||
|
||||
@ -122,6 +138,41 @@ extension MastodonConfirmEmailViewController {
|
||||
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 {
|
||||
|
@ -627,8 +627,6 @@ public enum L10n {
|
||||
/// Check Your Inbox
|
||||
public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title", fallback: "Check Your Inbox")
|
||||
public enum Button {
|
||||
/// Open Email App
|
||||
public static let openEmailApp = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.OpenEmailApp", fallback: "Open Email App")
|
||||
/// Resend
|
||||
public static let resend = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.Resend", fallback: "Resend")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user