// // Copyright 2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only // import SignalServiceKit import SignalUI import UIKit class ProvisioningTransferChoiceViewController: ProvisioningBaseViewController { override func viewDidLoad() { super.viewDidLoad() navigationItem.hidesBackButton = true let titleLabel = UILabel.titleLabelForRegistration(text: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_TITLE", comment: "The title for the device transfer 'choice' view", )) let explanationLabel = UILabel.explanationLabelForRegistration(text: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_LINKED_EXPLANATION", comment: "The explanation for the device transfer 'choice' view when linking a device", )) let transferButton = UIButton.registrationChoiceButton( title: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_TRANSFER_LINKED_TITLE", comment: "The title for the device transfer 'choice' view 'transfer' option when linking a device", ), subtitle: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_TRANSFER_LINKED_BODY", comment: "The body for the device transfer 'choice' view 'transfer' option when linking a device", ), iconName: Theme.iconName(.transfer), primaryAction: UIAction { [weak self] _ in self?.didSelectTransfer() }, ) let registerButton = UIButton.registrationChoiceButton( title: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_REGISTER_LINKED_TITLE", comment: "The title for the device transfer 'choice' view 'register' option when linking a device", ), subtitle: OWSLocalizedString( "DEVICE_TRANSFER_CHOICE_REGISTER_LINKED_BODY_LINK_AND_SYNC", value: "You’ll have the option to transfer messages and recent media from your phone", comment: "The body for the device transfer 'choice' view 'register' option when linking a device when message syncing is available", ), iconName: Theme.iconName(.register), primaryAction: UIAction { [weak self] _ in self?.didSelectRegister() }, ) let footerTextView = LinkingTextView() footerTextView.attributedText = NSAttributedString.composed(of: [ SignalSymbol.lock.attributedString(for: .title3), "\n", "\n".styled(with: .maximumLineHeight(6)), OWSLocalizedString( "LINKING_SYNCING_FOOTER", comment: "Footer text when loading messages during linking process.", ), " ", CommonStrings.learnMore.styled(with: .link(URL.Support.linkedDevices)), ]) .styled( with: .font(.dynamicTypeFootnote), .color(.Signal.secondaryLabel), .alignment(.center), ) let topSpacer = UIView.vStretchingSpacer() let bottomSpacer = UIView.vStretchingSpacer() let stackView = addStaticContentStackView(arrangedSubviews: [ topSpacer, titleLabel, explanationLabel, registerButton, transferButton, bottomSpacer, footerTextView, .spacer(withHeight: 32), ]) stackView.setCustomSpacing(24, after: explanationLabel) topSpacer.translatesAutoresizingMaskIntoConstraints = false bottomSpacer.translatesAutoresizingMaskIntoConstraints = false topSpacer.heightAnchor.constraint(equalTo: bottomSpacer.heightAnchor, multiplier: 0.5).isActive = true } // MARK: - Events private func didSelectTransfer() { Logger.info("") let prepViewController = ProvisioningPrepViewController(provisioningController: provisioningController, isTransferring: true) navigationController?.pushViewController(prepViewController, animated: true) } private func didSelectRegister() { Logger.info("") let prepViewController = ProvisioningPrepViewController(provisioningController: provisioningController, isTransferring: false) navigationController?.pushViewController(prepViewController, animated: true) } } #if DEBUG @available(iOS 17, *) #Preview { ProvisioningTransferChoiceViewController(provisioningController: .preview()) } #endif