111 lines
4.3 KiB
Swift
111 lines
4.3 KiB
Swift
//
|
|
// Copyright 2019 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Lottie
|
|
import SignalServiceKit
|
|
import SignalUI
|
|
|
|
class ProvisioningPrepViewController: ProvisioningBaseViewController {
|
|
|
|
lazy var animationView = LottieAnimationView(name: isTransferring ? "launchApp-iPad" : "launchApp-iPhone")
|
|
let isTransferring: Bool
|
|
|
|
init(provisioningController: ProvisioningController, isTransferring: Bool) {
|
|
self.isTransferring = isTransferring
|
|
super.init(provisioningController: provisioningController)
|
|
}
|
|
|
|
override func loadView() {
|
|
view = UIView()
|
|
view.addSubview(primaryView)
|
|
primaryView.autoPinEdgesToSuperviewEdges()
|
|
|
|
view.backgroundColor = Theme.backgroundColor
|
|
|
|
animationView.loopMode = .playOnce
|
|
animationView.backgroundBehavior = .pauseAndRestore
|
|
animationView.contentMode = .scaleAspectFit
|
|
animationView.setContentHuggingHigh()
|
|
|
|
let titleText: String
|
|
if isTransferring {
|
|
titleText = OWSLocalizedString("SECONDARY_TRANSFER_GET_STARTED_BY_OPENING_IPAD",
|
|
comment: "header text before the user can transfer to this device")
|
|
|
|
} else {
|
|
titleText = OWSLocalizedString("SECONDARY_ONBOARDING_GET_STARTED_BY_OPENING_PRIMARY",
|
|
comment: "header text before the user can link this device")
|
|
}
|
|
|
|
let titleLabel = self.createTitleLabel(text: titleText)
|
|
primaryView.addSubview(titleLabel)
|
|
titleLabel.accessibilityIdentifier = "onboarding.prelink.titleLabel"
|
|
|
|
let dontHaveSignalButton = UILabel()
|
|
dontHaveSignalButton.text = OWSLocalizedString("SECONDARY_ONBOARDING_GET_STARTED_DO_NOT_HAVE_PRIMARY",
|
|
comment: "Link explaining what to do when trying to link a device before having a primary device.")
|
|
dontHaveSignalButton.textColor = Theme.accentBlueColor
|
|
dontHaveSignalButton.font = UIFont.dynamicTypeSubheadlineClamped
|
|
dontHaveSignalButton.numberOfLines = 0
|
|
dontHaveSignalButton.textAlignment = .center
|
|
dontHaveSignalButton.lineBreakMode = .byWordWrapping
|
|
dontHaveSignalButton.isUserInteractionEnabled = true
|
|
dontHaveSignalButton.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(didTapExplanationLabel)))
|
|
dontHaveSignalButton.accessibilityIdentifier = "onboarding.prelink.explanationLabel"
|
|
dontHaveSignalButton.isHidden = isTransferring
|
|
|
|
let nextButton = self.primaryButton(title: CommonStrings.nextButton,
|
|
selector: #selector(didPressNext))
|
|
nextButton.accessibilityIdentifier = "onboarding.prelink.nextButton"
|
|
let primaryButtonView = ProvisioningBaseViewController.horizontallyWrap(primaryButton: nextButton)
|
|
|
|
let stackView = UIStackView(arrangedSubviews: [
|
|
titleLabel,
|
|
UIView.spacer(withHeight: 12),
|
|
animationView,
|
|
dontHaveSignalButton,
|
|
UIView.vStretchingSpacer(minHeight: 12),
|
|
primaryButtonView
|
|
])
|
|
stackView.axis = .vertical
|
|
stackView.alignment = .fill
|
|
stackView.spacing = 12
|
|
primaryView.addSubview(stackView)
|
|
|
|
stackView.autoPinEdgesToSuperviewMargins()
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
animationView.play()
|
|
}
|
|
|
|
// MARK: - Events
|
|
|
|
@objc
|
|
func didTapExplanationLabel(sender: UIGestureRecognizer) {
|
|
guard sender.state == .recognized else {
|
|
owsFailDebug("unexpected state: \(sender.state)")
|
|
return
|
|
}
|
|
|
|
let title = OWSLocalizedString("SECONDARY_ONBOARDING_INSTALL_PRIMARY_FIRST_TITLE", comment: "alert title")
|
|
let message = OWSLocalizedString("SECONDARY_ONBOARDING_INSTALL_PRIMARY_FIRST_BODY", comment: "alert body")
|
|
let alert = ActionSheetController(title: title, message: message)
|
|
alert.addAction(.acknowledge)
|
|
presentActionSheet(alert)
|
|
}
|
|
|
|
@objc
|
|
func didPressNext() {
|
|
Logger.info("")
|
|
|
|
if isTransferring {
|
|
provisioningController.transferAccount(fromViewController: self)
|
|
} else {
|
|
provisioningController.didConfirmSecondaryDevice(from: self)
|
|
}
|
|
}
|
|
}
|