Fix camera not dismissing

Changelog-Fixed: Fix camera not dismissing
Closes: #964
This commit is contained in:
Swift
2023-04-18 10:37:32 -04:00
committed by William Casarin
parent c679be9644
commit 3284832eb0
2 changed files with 37 additions and 8 deletions

View File

@@ -350,7 +350,7 @@ struct PostView: View {
} onVideoPicked: { url in } onVideoPicked: { url in
self.mediaToUpload = .video(url) self.mediaToUpload = .video(url)
} }
.alert(NSLocalizedString("Are you sure you want to upload this image?", comment: "Alert message asking if the user wants to upload an image."), isPresented: $image_upload_confirm) { .alert(NSLocalizedString("Are you sure you want to upload this media?", comment: "Alert message asking if the user wants to upload an image."), isPresented: $image_upload_confirm) {
Button(NSLocalizedString("Upload", comment: "Button to proceed with uploading."), role: .none) { Button(NSLocalizedString("Upload", comment: "Button to proceed with uploading."), role: .none) {
if let mediaToUpload { if let mediaToUpload {
self.handle_upload(media: mediaToUpload) self.handle_upload(media: mediaToUpload)
@@ -361,11 +361,20 @@ struct PostView: View {
} }
} }
.sheet(isPresented: $attach_camera) { .sheet(isPresented: $attach_camera) {
// image_upload_confirm isn't handled here, I don't know we need to display it here too tbh
ImagePicker(uploader: damus_state.settings.default_media_uploader, sourceType: .camera, pubkey: damus_state.pubkey, image_upload_confirm: $image_upload_confirm) { img in ImagePicker(uploader: damus_state.settings.default_media_uploader, sourceType: .camera, pubkey: damus_state.pubkey, image_upload_confirm: $image_upload_confirm) { img in
handle_upload(media: .image(img)) self.mediaToUpload = .image(img)
} onVideoPicked: { url in } onVideoPicked: { url in
handle_upload(media: .video(url)) self.mediaToUpload = .video(url)
}
.alert("Are you sure you want to upload this media?", isPresented: $image_upload_confirm) {
Button(NSLocalizedString("Upload", comment: "Button to proceed with uploading."), role: .none) {
if let mediaToUpload {
self.handle_upload(media: mediaToUpload)
self.attach_camera = false
}
}
Button(NSLocalizedString("Cancel", comment: "Button to cancel the upload."), role: .cancel) {}
} }
} }
.onAppear() { .onAppear() {

View File

@@ -20,6 +20,8 @@ struct EditProfilePictureControl: View {
@State private var show_library = false @State private var show_library = false
@State var image_upload_confirm: Bool = false @State var image_upload_confirm: Bool = false
@State var mediaToUpload: MediaUpload? = nil
var body: some View { var body: some View {
Menu { Menu {
Button(action: { Button(action: {
@@ -45,20 +47,38 @@ struct EditProfilePictureControl: View {
} }
} }
.sheet(isPresented: $show_camera) { .sheet(isPresented: $show_camera) {
// The alert may not be required for the profile pic upload case. Not showing the confirm check alert for this scenario
ImagePicker(uploader: uploader, sourceType: .camera, pubkey: pubkey, image_upload_confirm: $image_upload_confirm, imagesOnly: true) { img in ImagePicker(uploader: uploader, sourceType: .camera, pubkey: pubkey, image_upload_confirm: $image_upload_confirm, imagesOnly: true) { img in
handle_upload(media: .image(img)) self.mediaToUpload = .image(img)
} onVideoPicked: { url in } onVideoPicked: { url in
print("Cannot upload videos as profile image") print("Cannot upload videos as profile image")
} }
.alert("Are you sure you want to upload this image?", isPresented: $image_upload_confirm) {
Button(NSLocalizedString("Upload", comment: "Button to proceed with uploading."), role: .none) {
if let mediaToUpload {
self.handle_upload(media: mediaToUpload)
self.show_camera = false
}
}
Button(NSLocalizedString("Cancel", comment: "Button to cancel the upload."), role: .cancel) {}
}
} }
.sheet(isPresented: $show_library) { .sheet(isPresented: $show_library) {
// The alert may not be required for the profile pic upload case. Not showing the confirm check alert for this scenario
ImagePicker(uploader: uploader, sourceType: .photoLibrary, pubkey: pubkey, image_upload_confirm: $image_upload_confirm, imagesOnly: true) { img in ImagePicker(uploader: uploader, sourceType: .photoLibrary, pubkey: pubkey, image_upload_confirm: $image_upload_confirm, imagesOnly: true) { img in
handle_upload(media: .image(img)) self.mediaToUpload = .image(img)
} onVideoPicked: { url in } onVideoPicked: { url in
print("Cannot upload videos as profile image") print("Cannot upload videos as profile image")
} }
.alert("Are you sure you want to upload this image?", isPresented: $image_upload_confirm) {
Button(NSLocalizedString("Upload", comment: "Button to proceed with uploading."), role: .none) {
if let mediaToUpload {
self.handle_upload(media: mediaToUpload)
self.show_library = false
}
}
Button(NSLocalizedString("Cancel", comment: "Button to cancel the upload."), role: .cancel) {}
}
} }
} }