From 81683f980ad6b772c48e2060569b2d6e51a6b0dd Mon Sep 17 00:00:00 2001 From: Joel Klabo Date: Wed, 29 Mar 2023 20:04:20 -0700 Subject: [PATCH] Allow Uploading Photos and Videos from Camera Changelog-Added: Upload Photos and Videos from Camera Closes: #840 --- damus/Info.plist | 4 ++++ damus/Views/PostView.swift | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/damus/Info.plist b/damus/Info.plist index 0f1867e6..a0d03416 100644 --- a/damus/Info.plist +++ b/damus/Info.plist @@ -46,5 +46,9 @@ NSAllowsArbitraryLoads + NSCameraUsageDescription + Damus needs access to your camera if you want to upload photos from it + NSMicrophoneUsageDescription + Damus needs access to your microphone if you want to upload recorded videos from it diff --git a/damus/Views/PostView.swift b/damus/Views/PostView.swift index f4fef622..5ad1d78d 100644 --- a/damus/Views/PostView.swift +++ b/damus/Views/PostView.swift @@ -19,6 +19,7 @@ struct PostView: View { @FocusState var focus: Bool @State var showPrivateKeyWarning: Bool = false @State var attach_media: Bool = false + @State var attach_camera: Bool = false @State var error: String? = nil @StateObject var image_upload: ImageUploadModel = ImageUploadModel() @@ -80,11 +81,20 @@ struct PostView: View { }) } + var CameraButton: some View { + Button(action: { + attach_camera = true + }, label: { + Image(systemName: "camera") + }) + } + var AttachmentBar: some View { HStack(alignment: .center) { ImageButton - .disabled(image_upload.progress != nil) + CameraButton } + .disabled(image_upload.progress != nil) } var PostButton: some View { @@ -221,6 +231,13 @@ struct PostView: View { handle_upload(media: .video(url)) } } + .sheet(isPresented: $attach_camera) { + ImagePicker(sourceType: .camera, damusState: damus_state) { img in + handle_upload(media: .image(img)) + } onVideoPicked: { url in + handle_upload(media: .video(url)) + } + } .onAppear() { if let replying_to { if damus_state.drafts.replies[replying_to] == nil {