TM-SGNL-iOS/Signal/Registration/UserInterface/RegistrationLoadingViewController.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

83 lines
2.4 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import SignalServiceKit
import SignalUI
class RegistrationLoadingViewController: OWSViewController {
enum RegistrationLoadingMode {
case generic
case submittingPhoneNumber(e164: String)
case submittingVerificationCode
case restoringBackup
}
public init(mode: RegistrationLoadingMode) {
spinnerView = AnimatedProgressView(loadingText: {
switch mode {
case .generic:
return ""
case let .submittingPhoneNumber(e164):
let format = OWSLocalizedString(
"REGISTRATION_VIEW_PHONE_NUMBER_SPINNER_LABEL_FORMAT",
comment: "Label for the progress spinner shown during phone number registration. Embeds {{phone number}}."
)
return String(format: format, e164.e164FormattedAsPhoneNumberWithoutBreaks)
case .submittingVerificationCode:
return OWSLocalizedString(
"ONBOARDING_VERIFICATION_CODE_VALIDATION_PROGRESS_LABEL",
comment: "Label for a progress spinner currently validating code"
)
case .restoringBackup:
// TODO: [Backups] localize
return "Restoring from backup…"
// comment: "Label for a progress spinner when restoring from backup"
}
}())
super.init()
}
@available(*, unavailable)
public override init() {
owsFail("This should not be called")
}
// MARK: - Rendering
private let spinnerView: AnimatedProgressView
public override func viewDidLoad() {
super.viewDidLoad()
initialRender()
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if spinnerView.isAnimating.negated {
spinnerView.startAnimating()
}
}
public override func themeDidChange() {
super.themeDidChange()
render()
}
private func initialRender() {
navigationItem.setHidesBackButton(true, animated: false)
spinnerView.alpha = 1
view.addSubview(spinnerView)
spinnerView.autoCenterInSuperviewMargins()
render()
}
private func render() {
view.backgroundColor = Theme.backgroundColor
}
}