damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit a2b062017576a3f35c339700b9edf981e33e7d6d
parent 8c6bee3d90d9019b8d561d814d5c8bc9916fde4b
Author: Swift Coder <scoder1747@gmail.com>
Date:   Thu, 24 Oct 2024 10:36:34 -0400

fix: banner image upload

There was a nostr.build auth issue when uploading banner images. This
fixes that.

Closes: #2614
Changelog-Fixed: Fix banner image uploa
Signed-off-by: Swift Coder <scoder1747@gmail.com>

Diffstat:
Mdamus/Views/BannerImageView.swift | 2+-
Mdamus/Views/CreateAccountView.swift | 2+-
Mdamus/Views/MediaPicker.swift | 20+++++++++++++++-----
Mdamus/Views/PostView.swift | 2+-
Mdamus/Views/Profile/EditPictureControl.swift | 7++++---
Mdamus/Views/Profile/ProfilePictureSelector.swift | 2+-
6 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/damus/Views/BannerImageView.swift b/damus/Views/BannerImageView.swift @@ -31,7 +31,7 @@ struct EditBannerImageView: View { .onFailureImage(defaultImage) .kfClickable() - EditPictureControl(uploader: damus_state.settings.default_media_uploader, pubkey: damus_state.pubkey, image_url: $banner_image, uploadObserver: viewModel, callback: callback) + EditPictureControl(uploader: damus_state.settings.default_media_uploader, keypair: damus_state.keypair, pubkey: damus_state.pubkey, image_url: $banner_image, uploadObserver: viewModel, callback: callback) } } } diff --git a/damus/Views/CreateAccountView.swift b/damus/Views/CreateAccountView.swift @@ -28,7 +28,7 @@ struct CreateAccountView: View { Spacer() VStack(alignment: .center) { - EditPictureControl(uploader: .nostrBuild, pubkey: account.pubkey, size: 75, setup: true, image_url: $account.profile_image , uploadObserver: profileUploadObserver, callback: uploadedProfilePicture) + EditPictureControl(uploader: .nostrBuild, keypair: account.keypair, pubkey: account.pubkey, size: 75, setup: true, image_url: $account.profile_image , uploadObserver: profileUploadObserver, callback: uploadedProfilePicture) .shadow(radius: 2) .padding(.top, 100) diff --git a/damus/Views/MediaPicker.swift b/damus/Views/MediaPicker.swift @@ -9,15 +9,19 @@ import UIKit import SwiftUI import PhotosUI +enum MediaPickerEntry { + case editPictureControl + case postView +} + struct MediaPicker: UIViewControllerRepresentable { @Environment(\.presentationMode) @Binding private var presentationMode + let mediaPickerEntry: MediaPickerEntry @Binding var image_upload_confirm: Bool - var imagesOnly: Bool = false let onMediaPicked: (PreUploadedMedia) -> Void - final class Coordinator: NSObject, PHPickerViewControllerDelegate { var parent: MediaPicker @@ -138,9 +142,15 @@ struct MediaPicker: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> PHPickerViewController { var configuration = PHPickerConfiguration(photoLibrary: .shared()) - configuration.selectionLimit = 0 // Allows multiple media selection - configuration.filter = imagesOnly ? .images : .any(of: [.images, .videos]) - configuration.selection = .ordered // images are returned in the order they were selected + numbered badge displayed + switch mediaPickerEntry { + case .postView: + configuration.selectionLimit = 0 // allows multiple media selection + configuration.filter = .any(of: [.images, .videos]) + configuration.selection = .ordered // images are returned in the order they were selected + numbered badge displayed + case .editPictureControl: + configuration.selectionLimit = 1 // allows one media selection + configuration.filter = .images // allows image only + } let picker = PHPickerViewController(configuration: configuration) picker.delegate = context.coordinator as any PHPickerViewControllerDelegate return picker diff --git a/damus/Views/PostView.swift b/damus/Views/PostView.swift @@ -437,7 +437,7 @@ struct PostView: View { } .background(DamusColors.adaptableWhite.edgesIgnoringSafeArea(.all)) .sheet(isPresented: $attach_media) { - MediaPicker(image_upload_confirm: $image_upload_confirm){ media in + MediaPicker(mediaPickerEntry: .postView, image_upload_confirm: $image_upload_confirm){ media in self.preUploadedMedia.append(media) } .alert(NSLocalizedString("Are you sure you want to upload the selected media?", comment: "Alert message asking if the user wants to upload media."), isPresented: $image_upload_confirm) { diff --git a/damus/Views/Profile/EditPictureControl.swift b/damus/Views/Profile/EditPictureControl.swift @@ -14,6 +14,7 @@ class ImageUploadingObserver: ObservableObject { struct EditPictureControl: View { let uploader: MediaUploader + let keypair: Keypair? let pubkey: Pubkey var size: CGFloat? = 25 var setup: Bool? = false @@ -113,7 +114,7 @@ struct EditPictureControl: View { } } .sheet(isPresented: $show_library) { - MediaPicker(image_upload_confirm: $image_upload_confirm, imagesOnly: true) { media in + MediaPicker(mediaPickerEntry: .editPictureControl, image_upload_confirm: $image_upload_confirm) { media in self.preUploadedMedia = media } .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) { @@ -195,7 +196,7 @@ struct EditPictureControl: View { private func handle_upload(media: MediaUpload) { uploadObserver.isLoading = true Task { - let res = await image_upload.start(media: media, uploader: uploader) + let res = await image_upload.start(media: media, uploader: uploader, keypair: keypair) switch res { case .success(let urlString): @@ -221,7 +222,7 @@ struct EditPictureControl_Previews: PreviewProvider { let observer = ImageUploadingObserver() ZStack { Color.gray - EditPictureControl(uploader: .nostrBuild, pubkey: test_pubkey, size: 100, setup: false, image_url: url, uploadObserver: observer) { _ in + EditPictureControl(uploader: .nostrBuild, keypair: test_keypair, pubkey: test_pubkey, size: 100, setup: false, image_url: url, uploadObserver: observer) { _ in // } } diff --git a/damus/Views/Profile/ProfilePictureSelector.swift b/damus/Views/Profile/ProfilePictureSelector.swift @@ -33,7 +33,7 @@ struct EditProfilePictureView: View { .scaledToFill() .kfClickable() - EditPictureControl(uploader: damus_state?.settings.default_media_uploader ?? .nostrBuild, pubkey: pubkey, image_url: $profile_url, uploadObserver: uploadObserver, callback: callback) + EditPictureControl(uploader: damus_state?.settings.default_media_uploader ?? .nostrBuild, keypair: damus_state?.keypair, pubkey: pubkey, image_url: $profile_url, uploadObserver: uploadObserver, callback: callback) } .frame(width: size, height: size) .clipShape(Circle())