import Foundation import Display import LegacyComponents private final class LegacyImagePickerController: LegacyController, TGLegacyCameraControllerDelegate, TGImagePickerControllerDelegate { private let completion: (UIImage?) -> Void init(presentation: LegacyControllerPresentation, theme: PresentationTheme?, completion: @escaping (UIImage?) -> Void) { self.completion = completion super.init(presentation: presentation, theme: theme) } required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func legacyCameraControllerCompletedWithNoResult() { self.completion(nil) } func imagePickerController(_ imagePicker: TGImagePickerController!, didFinishPickingWithAssets assets: [Any]!) { if let image = assets.first as? UIImage { self.completion(image) } else { self.completion(nil) } } } func legacyImagePicker(theme: PresentationTheme, completion: @escaping (UIImage?) -> Void) -> ViewController { var dismissImpl: (() -> Void)? let legacyController = LegacyImagePickerController(presentation: .modal(animateIn: true), theme: theme, completion: { image in dismissImpl?() completion(image) }) let imagePickerController = TGLegacyCameraController(context: legacyController.context)! imagePickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary imagePickerController.completionDelegate = legacyController legacyController.bind(controller: imagePickerController) dismissImpl = { [weak legacyController] in legacyController?.dismiss() } return legacyController }