mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
3.1 KiB
Swift
67 lines
3.1 KiB
Swift
|
|
final class LinkPreviewModal : Modal {
|
|
private let onLinkPreviewsEnabled: () -> Void
|
|
|
|
// MARK: Lifecycle
|
|
init(onLinkPreviewsEnabled: @escaping () -> Void) {
|
|
self.onLinkPreviewsEnabled = onLinkPreviewsEnabled
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
preconditionFailure("Use init(onLinkPreviewsEnabled:) instead.")
|
|
}
|
|
|
|
override init(nibName: String?, bundle: Bundle?) {
|
|
preconditionFailure("Use init(onLinkPreviewsEnabled:) instead.")
|
|
}
|
|
|
|
override func populateContentView() {
|
|
// Title
|
|
let titleLabel = UILabel()
|
|
titleLabel.textColor = Colors.text
|
|
titleLabel.font = .boldSystemFont(ofSize: Values.largeFontSize)
|
|
titleLabel.text = "Enable Link Previews?"
|
|
titleLabel.textAlignment = .center
|
|
// Message
|
|
let messageLabel = UILabel()
|
|
messageLabel.textColor = Colors.text
|
|
messageLabel.font = .systemFont(ofSize: Values.smallFontSize)
|
|
let message = "Enabling link previews will show previews for URLs you send and receive. This can be useful, but Session will need to contact linked websites to generate previews. You can always disable link previews in Session's settings."
|
|
messageLabel.text = message
|
|
messageLabel.numberOfLines = 0
|
|
messageLabel.lineBreakMode = .byWordWrapping
|
|
messageLabel.textAlignment = .center
|
|
// Enable button
|
|
let enableButton = UIButton()
|
|
enableButton.set(.height, to: Values.mediumButtonHeight)
|
|
enableButton.layer.cornerRadius = Modal.buttonCornerRadius
|
|
enableButton.backgroundColor = Colors.buttonBackground
|
|
enableButton.titleLabel!.font = .systemFont(ofSize: Values.smallFontSize)
|
|
enableButton.setTitleColor(Colors.text, for: UIControl.State.normal)
|
|
enableButton.setTitle("Enable", for: UIControl.State.normal)
|
|
enableButton.addTarget(self, action: #selector(enable), for: UIControl.Event.touchUpInside)
|
|
// Button stack view
|
|
let buttonStackView = UIStackView(arrangedSubviews: [ cancelButton, enableButton ])
|
|
buttonStackView.axis = .horizontal
|
|
buttonStackView.spacing = Values.mediumSpacing
|
|
buttonStackView.distribution = .fillEqually
|
|
// Main stack view
|
|
let mainStackView = UIStackView(arrangedSubviews: [ titleLabel, messageLabel, buttonStackView ])
|
|
mainStackView.axis = .vertical
|
|
mainStackView.spacing = Values.largeSpacing
|
|
contentView.addSubview(mainStackView)
|
|
mainStackView.pin(.leading, to: .leading, of: contentView, withInset: Values.largeSpacing)
|
|
mainStackView.pin(.top, to: .top, of: contentView, withInset: Values.largeSpacing)
|
|
contentView.pin(.trailing, to: .trailing, of: mainStackView, withInset: Values.largeSpacing)
|
|
contentView.pin(.bottom, to: .bottom, of: mainStackView, withInset: Values.largeSpacing)
|
|
}
|
|
|
|
// MARK: Interaction
|
|
@objc private func enable() {
|
|
SSKPreferences.areLinkPreviewsEnabled = true
|
|
presentingViewController?.dismiss(animated: true, completion: nil)
|
|
onLinkPreviewsEnabled()
|
|
}
|
|
}
|