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.
		
		
		
		
		
			
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import UIKit
 | |
| import SessionUIKit
 | |
| 
 | |
| final class ScanQRCodeWrapperVC: BaseVC {
 | |
|     var delegate: (UIViewController & QRScannerDelegate)? = nil
 | |
|     var isPresentedModally = false
 | |
|     
 | |
|     private let message: String?
 | |
|     private let scanQRCodeVC = QRCodeScanningViewController()
 | |
|     
 | |
|     // MARK: - Lifecycle
 | |
|     
 | |
|     init(message: String?) {
 | |
|         self.message = message
 | |
|         
 | |
|         super.init(nibName: nil, bundle: nil)
 | |
|     }
 | |
|     
 | |
|     required init?(coder: NSCoder) {
 | |
|         preconditionFailure("Use init(message:) instead.")
 | |
|     }
 | |
|     
 | |
|     override init(nibName: String?, bundle: Bundle?) {
 | |
|         preconditionFailure("Use init(message:) instead.")
 | |
|     }
 | |
|     
 | |
|     override func viewDidLoad() {
 | |
|         super.viewDidLoad()
 | |
|         
 | |
|         title = "Scan QR Code"
 | |
|         
 | |
|         // Set up navigation bar if needed
 | |
|         if isPresentedModally {
 | |
|             navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .stop, target: self, action: #selector(close))
 | |
|         }
 | |
|         
 | |
|         // Set up scan QR code VC
 | |
|         scanQRCodeVC.scanDelegate = delegate
 | |
|         let scanQRCodeVCView = scanQRCodeVC.view!
 | |
|         view.addSubview(scanQRCodeVCView)
 | |
|         scanQRCodeVCView.pin(.leading, to: .leading, of: view)
 | |
|         scanQRCodeVCView.pin(.trailing, to: .trailing, of: view)
 | |
|         scanQRCodeVCView.autoPinEdge(.top, to: .top, of: view)
 | |
|         
 | |
|         if let message = message {
 | |
|             scanQRCodeVCView.set(.height, lessThanOrEqualTo: UIScreen.main.bounds.width)
 | |
|             
 | |
|             // Set up bottom view
 | |
|             let bottomView = UIView()
 | |
|             view.addSubview(bottomView)
 | |
|             bottomView.pin(.top, to: .bottom, of: scanQRCodeVCView)
 | |
|             bottomView.pin(.leading, to: .leading, of: view)
 | |
|             bottomView.pin(.trailing, to: .trailing, of: view)
 | |
|             bottomView.pin(.bottom, to: .bottom, of: view)
 | |
|             
 | |
|             // Set up explanation label
 | |
|             let explanationLabel: UILabel = UILabel()
 | |
|             explanationLabel.font = .systemFont(ofSize: Values.smallFontSize)
 | |
|             explanationLabel.text = message
 | |
|             explanationLabel.themeTextColor = .textPrimary
 | |
|             explanationLabel.textAlignment = .center
 | |
|             explanationLabel.lineBreakMode = .byWordWrapping
 | |
|             explanationLabel.numberOfLines = 0
 | |
|             bottomView.addSubview(explanationLabel)
 | |
|             
 | |
|             explanationLabel.autoPinWidthToSuperview(withMargin: 32)
 | |
|             explanationLabel.autoPinHeightToSuperview(withMargin: 32)
 | |
|         }
 | |
|         else {
 | |
|             scanQRCodeVCView.autoPinEdge(.bottom, to: .bottom, of: view)
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     override func viewDidAppear(_ animated: Bool) {
 | |
|         super.viewDidAppear(animated)
 | |
|         
 | |
|         self.scanQRCodeVC.startCapture()
 | |
|     }
 | |
|     
 | |
|     // MARK: - Interaction
 | |
|     
 | |
|     @objc private func close() {
 | |
|         presentingViewController?.dismiss(animated: true, completion: nil)
 | |
|     }
 | |
|     
 | |
|     public func startCapture() {
 | |
|         self.scanQRCodeVC.startCapture()
 | |
|     }
 | |
| }
 |