From 76d65c410df5f6d8a8bc94e65cef7d5fcef159f6 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 20 Jun 2025 11:44:10 +1000 Subject: [PATCH 1/3] Move `RemotePost+Metadata` extension to WordPressData folder --- .../WordPressData/Swift}/RemotePost+Metadata.swift | 0 WordPress/WordPress.xcodeproj/project.pbxproj | 3 --- 2 files changed, 3 deletions(-) rename {WordPress/Classes => Sources/WordPressData/Swift}/RemotePost+Metadata.swift (100%) diff --git a/WordPress/Classes/RemotePost+Metadata.swift b/Sources/WordPressData/Swift/RemotePost+Metadata.swift similarity index 100% rename from WordPress/Classes/RemotePost+Metadata.swift rename to Sources/WordPressData/Swift/RemotePost+Metadata.swift diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 07ad1743d138..ac15009236f9 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1160,7 +1160,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "RemotePost+Metadata.swift", "Services/PostRepository+Helpers.swift", ); target = 3F7AE0B42D9B30A100AB4892 /* WordPressData */; @@ -1169,7 +1168,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "RemotePost+Metadata.swift", "Services/PostRepository+Helpers.swift", ); target = 1D6058900D05DD3D006BFB54 /* WordPress */; @@ -1178,7 +1176,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "RemotePost+Metadata.swift", "Services/PostRepository+Helpers.swift", ); target = FABB1F8F2602FC2C00C8785C /* Jetpack */; From 9857adadb5147135eae7551951f13f0cc97f4e74 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 20 Jun 2025 11:51:48 +1000 Subject: [PATCH 2/3] Move extensions from `PostRepository+Helpers.swift` to WordPressData --- .../RemotePostCreateParameters+Helpers.swift | 21 ------------------ .../RemotePostUpdateParameters+Helpers.swift | 22 +++++++++++++++++++ WordPress/WordPress.xcodeproj/project.pbxproj | 4 ---- 3 files changed, 22 insertions(+), 25 deletions(-) rename WordPress/Classes/Services/PostRepository+Helpers.swift => Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift (70%) create mode 100644 Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift diff --git a/WordPress/Classes/Services/PostRepository+Helpers.swift b/Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift similarity index 70% rename from WordPress/Classes/Services/PostRepository+Helpers.swift rename to Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift index 3d1945483e97..33da60bcd48b 100644 --- a/WordPress/Classes/Services/PostRepository+Helpers.swift +++ b/Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift @@ -52,24 +52,3 @@ private func makeTags(from tags: String) -> [String] { .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } .filter { !$0.isEmpty } } - -public extension RemotePostUpdateParameters { - - var isEmpty: Bool { - self == RemotePostUpdateParameters() - } - - /// Returns a diff between the original and the latest revision with the - /// changes applied on top. - static func changes(from original: AbstractPost, to latest: AbstractPost, with changes: RemotePostUpdateParameters? = nil) -> RemotePostUpdateParameters { - guard original !== latest else { - return changes ?? RemotePostUpdateParameters() - } - let parametersOriginal = RemotePostCreateParameters(post: original) - var parametersLatest = RemotePostCreateParameters(post: latest) - if let changes { - parametersLatest.apply(changes) - } - return parametersLatest.changes(from: parametersOriginal) - } -} diff --git a/Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift b/Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift new file mode 100644 index 000000000000..8f78a4d0d5df --- /dev/null +++ b/Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift @@ -0,0 +1,22 @@ +import WordPressKit + +public extension RemotePostUpdateParameters { + + var isEmpty: Bool { + self == RemotePostUpdateParameters() + } + + /// Returns a diff between the original and the latest revision with the + /// changes applied on top. + static func changes(from original: AbstractPost, to latest: AbstractPost, with changes: RemotePostUpdateParameters? = nil) -> RemotePostUpdateParameters { + guard original !== latest else { + return changes ?? RemotePostUpdateParameters() + } + let parametersOriginal = RemotePostCreateParameters(post: original) + var parametersLatest = RemotePostCreateParameters(post: latest) + if let changes { + parametersLatest.apply(changes) + } + return parametersLatest.changes(from: parametersOriginal) + } +} diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index ac15009236f9..61a73aed9f79 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1092,7 +1092,6 @@ 0C5C46F42D98343300F2CD55 /* Exceptions for "Classes" folder in "Keystone" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( - "Services/PostRepository+Helpers.swift", "System/ApiCredentials+BuildSecrets.swift", System/main.swift, "System/WordPress-Bridging-Header.h", @@ -1160,7 +1159,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "Services/PostRepository+Helpers.swift", ); target = 3F7AE0B42D9B30A100AB4892 /* WordPressData */; }; @@ -1168,7 +1166,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "Services/PostRepository+Helpers.swift", ); target = 1D6058900D05DD3D006BFB54 /* WordPress */; }; @@ -1176,7 +1173,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( "Networking/WordPressOrgRestApi+WordPress.swift", - "Services/PostRepository+Helpers.swift", ); target = FABB1F8F2602FC2C00C8785C /* Jetpack */; }; From ad6983c0ca3231c4a148c29053e3a8b0bec31504 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 20 Jun 2025 11:56:19 +1000 Subject: [PATCH 3/3] Move `WordPressOrgRestApi+WordPress.swift` file to WordPressData --- .../WordPressOrgRestApi+WordPress.swift | 0 WordPress/WordPress.xcodeproj/project.pbxproj | 24 ------------------- 2 files changed, 24 deletions(-) rename {WordPress/Classes/Networking => Sources/WordPressData/Swift}/WordPressOrgRestApi+WordPress.swift (100%) diff --git a/WordPress/Classes/Networking/WordPressOrgRestApi+WordPress.swift b/Sources/WordPressData/Swift/WordPressOrgRestApi+WordPress.swift similarity index 100% rename from WordPress/Classes/Networking/WordPressOrgRestApi+WordPress.swift rename to Sources/WordPressData/Swift/WordPressOrgRestApi+WordPress.swift diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 61a73aed9f79..275b22af2a9e 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1155,27 +1155,6 @@ ); target = E16AB92914D978240047A2E5 /* WordPressTest */; }; - 3F0F25872D9BD88C00CD05D6 /* Exceptions for "Classes" folder in "WordPressData" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - "Networking/WordPressOrgRestApi+WordPress.swift", - ); - target = 3F7AE0B42D9B30A100AB4892 /* WordPressData */; - }; - 3F164FCF2D9E49A8008BC606 /* Exceptions for "Classes" folder in "WordPress" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - "Networking/WordPressOrgRestApi+WordPress.swift", - ); - target = 1D6058900D05DD3D006BFB54 /* WordPress */; - }; - 3F164FD02D9E49A8008BC606 /* Exceptions for "Classes" folder in "Jetpack" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - "Networking/WordPressOrgRestApi+WordPress.swift", - ); - target = FABB1F8F2602FC2C00C8785C /* Jetpack */; - }; 3F1A64F82DA7ABC300786B92 /* Exceptions for "Classes" folder in "Reader" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( @@ -1359,11 +1338,9 @@ 24CE57C42CD3375200C7B37D /* Classes */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 3F164FCF2D9E49A8008BC606 /* Exceptions for "Classes" folder in "WordPress" target */, 4AC9F8152DE528180095EA51 /* Exceptions for "Classes" folder in "WordPressShareExtension" target */, 4ABC59762DE52AA2005A6B84 /* Exceptions for "Classes" folder in "WordPressDraftActionExtension" target */, 4ABCAB382DE5333C005A6B84 /* Exceptions for "Classes" folder in "WordPressNotificationServiceExtension" target */, - 3F164FD02D9E49A8008BC606 /* Exceptions for "Classes" folder in "Jetpack" target */, 4ABC59822DE52D2A005A6B84 /* Exceptions for "Classes" folder in "JetpackShareExtension" target */, 4ABC59802DE52D23005A6B84 /* Exceptions for "Classes" folder in "JetpackDraftActionExtension" target */, 4ABCAB302DE5309F005A6B84 /* Exceptions for "Classes" folder in "JetpackNotificationServiceExtension" target */, @@ -1371,7 +1348,6 @@ 4ABCAB352DE531B6005A6B84 /* Exceptions for "Classes" folder in "JetpackIntents" target */, 3F1A64F82DA7ABC300786B92 /* Exceptions for "Classes" folder in "Reader" target */, 0C5C46F42D98343300F2CD55 /* Exceptions for "Classes" folder in "Keystone" target */, - 3F0F25872D9BD88C00CD05D6 /* Exceptions for "Classes" folder in "WordPressData" target */, ); path = Classes; sourceTree = "";