From affbf4e14db227ffa7a0bbe006d4914f613fae49 Mon Sep 17 00:00:00 2001 From: Eduardo Toledo Date: Tue, 1 Jul 2025 21:23:30 +0200 Subject: [PATCH 01/13] Avatar upload base implementation --- GravatarApp.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../Avatar/AvatarActionsMenu.swift | 60 ++++ .../Avatar/AvatarImageModel.swift | 2 +- .../Avatar/AvatarPickerAvatarView.swift | 185 +++++++----- .../AvatarPicker/AvatarPickerView.swift | 52 +++- .../AvatarPicker/AvatarPickerViewModel.swift | 123 +++++++- .../AvatarUploadErrorDialogModifier.swift | 69 +++++ .../AvatarUpload/AvatarUploadErrorInfo.swift | 5 + .../AvatarUploadFailedAction.swift | 4 + .../AvatarUpload/CameraImagePicker.swift | 51 ++++ .../ImageCropper/CropFrameOverlayView.swift | 33 +++ .../ImageCropper/ImageCropper.swift | 28 ++ .../ImageCropperViewController.swift | 277 ++++++++++++++++++ .../AvatarUpload/ImageEditor.swift | 29 ++ .../AvatarUpload/ImagePickerSectionView.swift | 62 ++++ .../ImagePlaygroundModifier.swift | 41 +++ .../AvatarUpload/PhotosImagePicker.swift | 70 +++++ .../AvatarUpload/SystemImagePickerView.swift | 149 ++++++++++ .../AvatarPicker/Grid/AvatarGrid.swift | 44 +-- GravatarApp/Networking/HTTPStatus.swift | 7 + 21 files changed, 1160 insertions(+), 137 deletions(-) create mode 100644 GravatarApp/AvatarPicker/Avatar/AvatarActionsMenu.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/AvatarUploadErrorDialogModifier.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/AvatarUploadErrorInfo.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/AvatarUploadFailedAction.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/CameraImagePicker.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImageCropper/CropFrameOverlayView.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImageCropper/ImageCropper.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImageCropper/ImageCropperViewController.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImageEditor.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImagePickerSectionView.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/ImagePlaygroundModifier.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/PhotosImagePicker.swift create mode 100644 GravatarApp/AvatarPicker/AvatarUpload/SystemImagePickerView.swift create mode 100644 GravatarApp/Networking/HTTPStatus.swift diff --git a/GravatarApp.xcodeproj/project.pbxproj b/GravatarApp.xcodeproj/project.pbxproj index bfebd70c..2d8eddda 100644 --- a/GravatarApp.xcodeproj/project.pbxproj +++ b/GravatarApp.xcodeproj/project.pbxproj @@ -634,7 +634,7 @@ repositoryURL = "https://github.com/Automattic/Gravatar-SDK-iOS.git"; requirement = { kind = revision; - revision = f32fe832d31fd19df4b6d94800abb231bfd085c8; + revision = 69723225f3b65bd443f281d9eb71b6d94c5c6a43; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/GravatarApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/GravatarApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 27ad32a9..8962c66f 100644 --- a/GravatarApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/GravatarApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "836a6c1f59ccca7cc2a410d4156881da4efbded0acf8657b79c1288717ea525b", + "originHash" : "437adc9d79bbd65f1a26832e8f13a2ef3fffd3eb33063cdda86c8dde1cd94dce", "pins" : [ { "identity" : "automattic-tracks-ios", @@ -15,7 +15,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/Automattic/Gravatar-SDK-iOS.git", "state" : { - "revision" : "f32fe832d31fd19df4b6d94800abb231bfd085c8" + "revision" : "69723225f3b65bd443f281d9eb71b6d94c5c6a43" } }, { diff --git a/GravatarApp/AvatarPicker/Avatar/AvatarActionsMenu.swift b/GravatarApp/AvatarPicker/Avatar/AvatarActionsMenu.swift new file mode 100644 index 00000000..51fc3e69 --- /dev/null +++ b/GravatarApp/AvatarPicker/Avatar/AvatarActionsMenu.swift @@ -0,0 +1,60 @@ +import SwiftUI + +struct AvatarActionsMenu