2023-04-03 11:54:16 +00:00
|
|
|
import SwiftUI
|
2023-07-19 05:46:25 +00:00
|
|
|
import UIKit
|
2023-04-03 11:54:16 +00:00
|
|
|
|
|
|
|
struct StatusEditorCameraPickerView: UIViewControllerRepresentable {
|
|
|
|
@Binding var selectedImage: UIImage?
|
2023-12-04 13:14:42 +00:00
|
|
|
@Environment(\.dismiss) var dismiss
|
2023-07-19 05:46:25 +00:00
|
|
|
|
2023-04-03 11:54:16 +00:00
|
|
|
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
|
|
|
|
let picker: StatusEditorCameraPickerView
|
2023-07-19 05:46:25 +00:00
|
|
|
|
2023-04-03 11:54:16 +00:00
|
|
|
init(picker: StatusEditorCameraPickerView) {
|
|
|
|
self.picker = picker
|
|
|
|
}
|
2023-07-19 05:46:25 +00:00
|
|
|
|
|
|
|
func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
|
2023-04-03 11:54:16 +00:00
|
|
|
guard let selectedImage = info[.originalImage] as? UIImage else { return }
|
2023-07-19 05:46:25 +00:00
|
|
|
picker.selectedImage = selectedImage
|
2023-12-04 13:14:42 +00:00
|
|
|
picker.dismiss()
|
2023-04-03 11:54:16 +00:00
|
|
|
}
|
|
|
|
}
|
2023-07-19 05:46:25 +00:00
|
|
|
|
2023-04-03 11:54:16 +00:00
|
|
|
func makeUIViewController(context: Context) -> UIImagePickerController {
|
|
|
|
let imagePicker = UIImagePickerController()
|
2023-12-19 08:51:20 +00:00
|
|
|
#if !os(visionOS)
|
2023-04-03 11:54:16 +00:00
|
|
|
imagePicker.sourceType = .camera
|
2023-12-19 08:51:20 +00:00
|
|
|
#endif
|
2023-04-03 12:17:55 +00:00
|
|
|
imagePicker.delegate = context.coordinator
|
2023-04-03 11:54:16 +00:00
|
|
|
return imagePicker
|
|
|
|
}
|
2023-07-19 05:46:25 +00:00
|
|
|
|
|
|
|
func updateUIViewController(_: UIImagePickerController, context _: Context) {}
|
|
|
|
|
2023-04-03 11:54:16 +00:00
|
|
|
func makeCoordinator() -> Coordinator {
|
|
|
|
Coordinator(picker: self)
|
|
|
|
}
|
|
|
|
}
|