diff --git a/Sources/WordPressData/Swift/AbstractPost.swift b/Sources/WordPressData/Swift/AbstractPost.swift index 9fe2a4316319..35c4bc440661 100644 --- a/Sources/WordPressData/Swift/AbstractPost.swift +++ b/Sources/WordPressData/Swift/AbstractPost.swift @@ -204,15 +204,6 @@ public extension AbstractPost { return media.first(where: { !$0.willAttemptToUploadLater() }) != nil } - /// Returns the changes made in the current revision compared to the - /// previous revision or the original post if there is only one revision. - var changes: RemotePostUpdateParameters { - guard let original else { - return RemotePostUpdateParameters() // Empty - } - return RemotePostUpdateParameters.changes(from: original, to: self) - } - /// Returns all revisions of the post including the original one. var allRevisions: [AbstractPost] { var revisions: [AbstractPost] = [self] diff --git a/Sources/WordPressData/Swift/PostMetadata.swift b/Sources/WordPressData/Swift/PostMetadata.swift index 4107e842d3c5..27ce43fca15d 100644 --- a/Sources/WordPressData/Swift/PostMetadata.swift +++ b/Sources/WordPressData/Swift/PostMetadata.swift @@ -74,5 +74,5 @@ private extension PostMetadataContainer { extension PostMetadataContainer.Key { static let jetpackNewsletterAccess: PostMetadataContainer.Key = "_jetpack_newsletter_access" static let jetpackNewsletterEmailDisabled: PostMetadataContainer.Key = "_jetpack_dont_email_post_to_subs" - static let foreignID: PostMetadataContainer.Key = "wp_jp_foreign_id" + public static let foreignID: PostMetadataContainer.Key = "wp_jp_foreign_id" } diff --git a/Sources/WordPressData/WordPressData.h b/Sources/WordPressData/WordPressData.h index 632ba5fc501b..e7ffdd1600c6 100644 --- a/Sources/WordPressData/WordPressData.h +++ b/Sources/WordPressData/WordPressData.h @@ -10,6 +10,4 @@ FOUNDATION_EXPORT const unsigned char WordPressDataVersionString[]; // As we'll hopefully soon rewrite these in Swift, we can implement proper access level then. #import #import -#import - FOUNDATION_EXTERN void SetCocoaLumberjackObjCLogLevel(NSUInteger ddLogLevelRawValue); diff --git a/Tests/WordPressDataTests/RemotePostCreateParametersTests.swift b/Tests/KeystoneTests/Tests/Models/RemotePostCreateParametersTests.swift similarity index 100% rename from Tests/WordPressDataTests/RemotePostCreateParametersTests.swift rename to Tests/KeystoneTests/Tests/Models/RemotePostCreateParametersTests.swift diff --git a/WordPress/Classes/Services/AbstractPost+Changes.swift b/WordPress/Classes/Services/AbstractPost+Changes.swift new file mode 100644 index 000000000000..fcb7f96c350b --- /dev/null +++ b/WordPress/Classes/Services/AbstractPost+Changes.swift @@ -0,0 +1,13 @@ +import WordPressData +import WordPressKit + +extension AbstractPost { + /// Returns the changes made in the current revision compared to the + /// previous revision or the original post if there is only one revision. + var changes: RemotePostUpdateParameters { + guard let original else { + return RemotePostUpdateParameters() // Empty + } + return RemotePostUpdateParameters.changes(from: original, to: self) + } +} diff --git a/Sources/WordPressData/Swift/PostHelper+JetpackSocial.swift b/WordPress/Classes/Services/PostHelper+JetpackSocial.swift similarity index 94% rename from Sources/WordPressData/Swift/PostHelper+JetpackSocial.swift rename to WordPress/Classes/Services/PostHelper+JetpackSocial.swift index 9b7ee14d11cd..116a4e82c287 100644 --- a/Sources/WordPressData/Swift/PostHelper+JetpackSocial.swift +++ b/WordPress/Classes/Services/PostHelper+JetpackSocial.swift @@ -1,5 +1,7 @@ +import WordPressData + extension PostHelper { - public typealias StringDictionary = [String: String] + typealias StringDictionary = [String: String] typealias Keys = Post.Constants typealias SkipPrefix = Post.PublicizeMetadataSkipPrefix @@ -15,7 +17,7 @@ extension PostHelper { /// - metadata: The metadata dictionary for the post. Optional because Obj-C shouldn't be trusted. /// - Returns: A dictionary for the `Post`'s `disabledPublicizeConnections` property. @objc(disabledPublicizeConnectionsForPost:andMetadata:) - public static func disabledPublicizeConnections(for post: AbstractPost?, metadata: [[String: Any]]?) -> [NSNumber: StringDictionary] { + static func disabledPublicizeConnections(for post: AbstractPost?, metadata: [[String: Any]]?) -> [NSNumber: StringDictionary] { guard let post, let metadata else { return [:] } @@ -70,7 +72,7 @@ extension PostHelper { /// - Parameter post: The associated `Post` object. /// - Returns: An array of metadata dictionaries representing the `Post`'s disabled connections. @objc(publicizeMetadataEntriesForPost:) - public static func publicizeMetadataEntries(for post: Post?) -> [StringDictionary] { + static func publicizeMetadataEntries(for post: Post?) -> [StringDictionary] { guard let post, let disabledConnectionsDictionary = post.disabledPublicizeConnections else { return [] diff --git a/Sources/WordPressData/Swift/PostHelper+Metadata.swift b/WordPress/Classes/Services/PostHelper+Metadata.swift similarity index 68% rename from Sources/WordPressData/Swift/PostHelper+Metadata.swift rename to WordPress/Classes/Services/PostHelper+Metadata.swift index 9af36bf56956..92efec435f93 100644 --- a/Sources/WordPressData/Swift/PostHelper+Metadata.swift +++ b/WordPress/Classes/Services/PostHelper+Metadata.swift @@ -1,11 +1,12 @@ import Foundation -import WordPressShared +import WordPressData import WordPressKit +import WordPressShared extension PostHelper { - @objc public static let foreignIDKey = PostMetadataContainer.Key.foreignID.rawValue + @objc static let foreignIDKey = PostMetadataContainer.Key.foreignID.rawValue - @objc public static func getForeignID(for post: RemotePost) -> UUID? { + @objc static func getForeignID(for post: RemotePost) -> UUID? { guard let metadata = post.metadata as? [[String: Any]] else { return nil } @@ -16,7 +17,7 @@ extension PostHelper { return UUID(uuidString: value) } - @objc public static func makeRawMetadata(from post: RemotePost) -> Data? { + @objc static func makeRawMetadata(from post: RemotePost) -> Data? { guard let metadata = post.metadata else { return nil } @@ -32,18 +33,8 @@ extension PostHelper { } } - static func mapDictionaryToMetadataItems(_ dictionary: [String: Any]) -> RemotePostMetadataItem? { - let id = dictionary["id"] - let value = dictionary["value"] - return RemotePostMetadataItem( - id: (id as? String) ?? (id as? NSNumber)?.stringValue, - key: dictionary["key"] as? String, - value: value as? String - ) - } - @objc(createOrUpdateCategoryForRemoteCategory:blog:context:) - public class func createOrUpdateCategory(for remoteCategory: RemotePostCategory, in blog: Blog, in context: NSManagedObjectContext) -> PostCategory? { + class func createOrUpdateCategory(for remoteCategory: RemotePostCategory, in blog: Blog, in context: NSManagedObjectContext) -> PostCategory? { guard let categoryID = remoteCategory.categoryID else { wpAssertionFailure("remote category missing categoryID") return nil diff --git a/Sources/WordPressData/Objective-C/include/PostHelper.h b/WordPress/Classes/Services/PostHelper.h similarity index 100% rename from Sources/WordPressData/Objective-C/include/PostHelper.h rename to WordPress/Classes/Services/PostHelper.h diff --git a/Sources/WordPressData/Objective-C/PostHelper.m b/WordPress/Classes/Services/PostHelper.m similarity index 99% rename from Sources/WordPressData/Objective-C/PostHelper.m rename to WordPress/Classes/Services/PostHelper.m index 9d157c676e2f..4b3ab7d30425 100644 --- a/Sources/WordPressData/Objective-C/PostHelper.m +++ b/WordPress/Classes/Services/PostHelper.m @@ -1,6 +1,7 @@ #import "PostHelper.h" -#import "WordPressData-Swift.h" +#import "WordPress-Swift.h" +@import WordPressData; @import WordPressKit; @import WordPressKitModels; @import WordPressShared; diff --git a/Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift b/WordPress/Classes/Services/RemotePostCreateParameters+Helpers.swift similarity index 80% rename from Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift rename to WordPress/Classes/Services/RemotePostCreateParameters+Helpers.swift index cbd0434a230d..39f58baee396 100644 --- a/Sources/WordPressData/Swift/RemotePostCreateParameters+Helpers.swift +++ b/WordPress/Classes/Services/RemotePostCreateParameters+Helpers.swift @@ -1,10 +1,11 @@ import Foundation +import WordPressData import WordPressKit import WordPressShared extension RemotePostCreateParameters { /// Initializes the parameters required to create the given post. - public init(post: AbstractPost) { + init(post: AbstractPost) { self.init( type: post is Post ? "post" : "page", status: (post.status ?? .draft).rawValue @@ -32,7 +33,7 @@ extension RemotePostCreateParameters { $0.categoryID.intValue } metadata = Set(Self.generateRemoteMetadata(for: post).compactMap { dictionary -> RemotePostMetadataItem? in - return PostHelper.mapDictionaryToMetadataItems(dictionary) + return Self.mapDictionaryToMetadataItems(dictionary) }) discussion = RemotePostDiscussionSettings( allowComments: post.allowComments, @@ -56,4 +57,14 @@ private extension RemotePostCreateParameters { output += PostMetadata.entries(in: PostMetadataContainer(post)) return output } + + static func mapDictionaryToMetadataItems(_ dictionary: [String: Any]) -> RemotePostMetadataItem? { + let id = dictionary["id"] + let value = dictionary["value"] + return RemotePostMetadataItem( + id: (id as? String) ?? (id as? NSNumber)?.stringValue, + key: dictionary["key"] as? String, + value: value as? String + ) + } } diff --git a/Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift b/WordPress/Classes/Services/RemotePostUpdateParameters+Helpers.swift similarity index 91% rename from Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift rename to WordPress/Classes/Services/RemotePostUpdateParameters+Helpers.swift index d37e0e0fb017..a8851c08b3f2 100644 --- a/Sources/WordPressData/Swift/RemotePostUpdateParameters+Helpers.swift +++ b/WordPress/Classes/Services/RemotePostUpdateParameters+Helpers.swift @@ -1,14 +1,15 @@ +import WordPressData import WordPressKit extension RemotePostUpdateParameters { - public var isEmpty: Bool { + var isEmpty: Bool { self == RemotePostUpdateParameters() } /// Returns a diff between the original and the latest revision with the /// changes applied on top. - public static func changes( + static func changes( from original: AbstractPost, to latest: AbstractPost, with changes: RemotePostUpdateParameters? = nil diff --git a/WordPress/Classes/System/WordPress-Bridging-Header.h b/WordPress/Classes/System/WordPress-Bridging-Header.h index adeafbcbbfcb..c4ef1d2696c9 100644 --- a/WordPress/Classes/System/WordPress-Bridging-Header.h +++ b/WordPress/Classes/System/WordPress-Bridging-Header.h @@ -21,6 +21,7 @@ #import "NSObject+Helpers.h" #import "PostCategoryService.h" +#import "PostHelper.h" #import "PostTagService.h" #import "ReaderPostService.h" diff --git a/WordPress/Classes/ViewRelated/Menus/Controllers/MenuPostService.h b/WordPress/Classes/ViewRelated/Menus/Controllers/MenuPostService.h index 033dd86bc2da..2e45ee4a5c83 100644 --- a/WordPress/Classes/ViewRelated/Menus/Controllers/MenuPostService.h +++ b/WordPress/Classes/ViewRelated/Menus/Controllers/MenuPostService.h @@ -1,5 +1,6 @@ #import #import +#import "PostHelper.h" @import WordPressData; @class Blog; diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index c20c4a7e6f60..b33d26c06f89 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1170,7 +1170,6 @@ publicHeaders = ( "Objective-C/include/Blog.h", "Objective-C/include/CoreDataStack.h", - "Objective-C/include/PostHelper.h", WordPressData.h, ); target = 3F7AE0B42D9B30A100AB4892 /* WordPressData */;