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()
 | 
						|
    }
 | 
						|
}
 |