mirror of
https://github.com/appwrite/sdk-for-apple.git
synced 2026-04-07 19:17:50 +00:00
58 lines
1.8 KiB
Swift
58 lines
1.8 KiB
Swift
import UIKit
|
|
|
|
public protocol ImagePickerDelegate: AnyObject {
|
|
func didSelect(image: UIImage?) async
|
|
}
|
|
|
|
open class ImagePicker: NSObject {
|
|
|
|
private let pickerController: UIImagePickerController
|
|
private weak var presentationController: UIViewController?
|
|
private weak var delegate: ImagePickerDelegate?
|
|
|
|
public init(presentationController: UIViewController, delegate: ImagePickerDelegate) {
|
|
self.pickerController = UIImagePickerController()
|
|
|
|
super.init()
|
|
|
|
self.presentationController = presentationController
|
|
self.delegate = delegate
|
|
|
|
self.pickerController.delegate = self
|
|
self.pickerController.allowsEditing = false
|
|
self.pickerController.sourceType = .photoLibrary
|
|
self.pickerController.mediaTypes = ["public.image"]
|
|
}
|
|
|
|
public func present() {
|
|
self.presentationController?.present(self.pickerController, animated: true)
|
|
}
|
|
|
|
private func pickerController(_ controller: UIImagePickerController, didSelect image: UIImage?) {
|
|
controller.dismiss(animated: true, completion: nil)
|
|
|
|
Task {
|
|
await self.delegate?.didSelect(image: image)
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ImagePicker: UIImagePickerControllerDelegate {
|
|
|
|
public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
|
|
self.pickerController(picker, didSelect: nil)
|
|
}
|
|
|
|
public func imagePickerController(_ picker: UIImagePickerController,
|
|
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
|
|
guard let image = info[.originalImage] as? UIImage else {
|
|
return self.pickerController(picker, didSelect: nil)
|
|
}
|
|
self.pickerController(picker, didSelect: image)
|
|
}
|
|
}
|
|
|
|
extension ImagePicker: UINavigationControllerDelegate {
|
|
|
|
}
|