/*
Copyright 2020-2024 New Vector Ltd.

SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
 */

import Foundation

final class CameraAccessAlertPresenter {
        
    // MARK: - Public
    
    func presentPermissionDeniedAlert(from presentingViewController: UIViewController, animated: Bool) {
        guard let settingsURL = URL(string: UIApplication.openSettingsURLString) else {
            return
        }
        
        let appDisplayName: String
        if !BWIBuildSettings.shared.secondaryAppName.isEmpty {
            appDisplayName = BWIBuildSettings.shared.secondaryAppName
        } else {
            appDisplayName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
        }
        
        let alert = UIAlertController(title: VectorL10n.camera, message: VectorL10n.cameraAccessNotGranted(appDisplayName), preferredStyle: .alert)
        
        let cancelActionTitle = VectorL10n.ok
        let cancelAction = UIAlertAction(title: cancelActionTitle, style: .cancel)
        
        let settingsActionTitle = VectorL10n.settings
        let settingsAction = UIAlertAction(title: settingsActionTitle, style: .default, handler: { _ in
            UIApplication.shared.open(settingsURL, options: [:], completionHandler: { (succeed) in
                if !succeed {
                    MXLog.debug("[CameraPresenter] Fails to open settings")
                }
            })
        })
        
        alert.addAction(cancelAction)
        alert.addAction(settingsAction)
        
        presentingViewController.present(alert, animated: animated, completion: nil)
    }
    
    func presentCameraUnavailableAlert(from presentingViewController: UIViewController, animated: Bool) {
        
        let alert = UIAlertController(title: VectorL10n.camera, message: VectorL10n.cameraUnavailable, preferredStyle: .alert)
        
        let okAction = UIAlertAction(title: VectorL10n.accept, style: .default, handler: nil)
        
        alert.addAction(okAction)
        
        presentingViewController.present(alert, animated: true, completion: nil)
    }
}
