Skip to content

Commit 962677e

Browse files
authored
Merge branch 'trunk' into merge/25.8-release-notes-into-trunk
2 parents add0be1 + 9e4d06a commit 962677e

File tree

109 files changed

+591
-902
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+591
-902
lines changed

Modules/Package.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ let package = Package(
1111
.library(name: "AsyncImageKit", targets: ["AsyncImageKit"]),
1212
.library(name: "DesignSystem", targets: ["DesignSystem"]),
1313
.library(name: "JetpackStatsWidgetsCore", targets: ["JetpackStatsWidgetsCore"]),
14+
.library(name: "WordPressData", targets: ["WordPressData"]),
1415
.library(name: "WordPressFlux", targets: ["WordPressFlux"]),
1516
.library(name: "WordPressShared", targets: ["WordPressShared"]),
1617
.library(name: "WordPressUI", targets: ["WordPressUI"]),
@@ -63,6 +64,8 @@ let package = Package(
6364
.product(name: "ScreenObject", package: "ScreenObject"),
6465
.product(name: "XCUITestHelpers", package: "ScreenObject"),
6566
], swiftSettings: [.swiftLanguageMode(.v5)]),
67+
.target(name: "WordPressDataObjC"),
68+
.target(name: "WordPressData", dependencies: [.target(name: "WordPressDataObjC")]),
6669
.target(name: "WordPressFlux", swiftSettings: [.swiftLanguageMode(.v5)]),
6770
.target(name: "WordPressCore", dependencies: [.target(name: "WordPressShared"), .product(name: "WordPressAPI", package: "wordpress-rs")]),
6871
.target(name: "WordPressSharedObjC", resources: [.process("Resources")], swiftSettings: [.swiftLanguageMode(.v5)]),
@@ -105,7 +108,7 @@ let package = Package(
105108
///
106109
/// ## Known Issues
107110
///
108-
///   - SwiftPM copies resource bundles from a target, including dynamic frameworks,
111+
/// - SwiftPM copies resource bundles from a target, including dynamic frameworks,
109112
/// into every target that depends on it. Make sure to avoid including frameworks
110113
/// with large resources bundled into multiple targets.
111114
enum XcodeSupport {
@@ -159,6 +162,7 @@ enum XcodeSupport {
159162
.xcodeTarget("XcodeTarget_App", dependencies: [
160163
"DesignSystem",
161164
"JetpackStatsWidgetsCore",
165+
"WordPressData",
162166
"WordPressFlux",
163167
"WordPressShared",
164168
"WordPressReader",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import CoreData
2+
import WordPressDataObjC
3+
4+
public protocol CoreDataStackSwift: CoreDataStack {
5+
6+
/// Execute the given block with a background context and save the changes.
7+
///
8+
/// This function _does not block_ its running thread. The block is executed in background and its return value
9+
/// is passed onto the `completion` block which is executed on the given `queue`.
10+
///
11+
/// - Parameters:
12+
/// - block: A closure which uses the given `NSManagedObjectContext` to make Core Data model changes.
13+
/// - completion: A closure which is called with the return value of the `block`, after the changed made
14+
/// by the `block` is saved.
15+
/// - queue: A queue on which to execute the completion block.
16+
func performAndSave<T>(_ block: @escaping (NSManagedObjectContext) -> T, completion: ((T) -> Void)?, on queue: DispatchQueue)
17+
18+
/// Execute the given block with a background context and save the changes _if the block does not throw an error_.
19+
///
20+
/// This function _does not block_ its running thread. The block is executed in background and the return value
21+
/// (or an error) is passed onto the `completion` block which is executed on the given `queue`.
22+
///
23+
/// - Parameters:
24+
/// - block: A closure that uses the given `NSManagedObjectContext` to make Core Data model changes. The changes
25+
/// are only saved if the block does not throw an error.
26+
/// - completion: A closure which is called with the `block`'s execution result, which is either an error thrown
27+
/// by the `block` or the return value of the `block`.
28+
/// - queue: A queue on which to execute the completion block.
29+
func performAndSave<T>(_ block: @escaping (NSManagedObjectContext) throws -> T, completion: ((Result<T, Error>) -> Void)?, on queue: DispatchQueue)
30+
31+
/// Execute the given block with a background context and save the changes _if the block does not throw an error_.
32+
///
33+
/// - Parameter block: A closure that uses the given `NSManagedObjectContext` to make Core Data model changes.
34+
/// The changes are only saved if the block does not throw an error.
35+
/// - Returns: The value returned by the `block`
36+
/// - Throws: The error thrown by the `block`, in which case the Core Data changes made by the `block` is discarded.
37+
func performAndSave<T>(_ block: @escaping (NSManagedObjectContext) throws -> T) async throws -> T
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@_exported import WordPressDataObjC
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FOUNDATION_EXPORT double WordPressDataVersionNumber;
2+
3+
FOUNDATION_EXPORT const unsigned char WordPressDataVersionString[];
4+
5+
#import <WordPressData/CoreDataService.h>
6+
#import <WordPressData/CoreDataStack.h>

WordPress/Classes/Services/CoreDataService.h Modules/Sources/WordPressDataObjC/include/CoreDataService.h

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#import <Foundation/Foundation.h>
2-
32
#import "CoreDataStack.h"
43

54
NS_ASSUME_NONNULL_BEGIN

WordPress/Classes/Utility/CoreData/CoreDataStack.h Modules/Sources/WordPressDataObjC/include/CoreDataStack.h

+10-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@
44
NS_ASSUME_NONNULL_BEGIN
55

66
@protocol CoreDataStack
7+
78
@property (nonatomic, readonly, strong) NSManagedObjectContext *mainContext;
9+
810
- (NSManagedObjectContext *const)newDerivedContext DEPRECATED_MSG_ATTRIBUTE("Use `performAndSave` instead");
11+
912
- (void)saveContextAndWait:(NSManagedObjectContext *)context;
13+
1014
- (void)saveContext:(NSManagedObjectContext *)context;
11-
- (void)saveContext:(NSManagedObjectContext *)context withCompletionBlock:(void (^ _Nullable)(void))completionBlock onQueue:(dispatch_queue_t)queue NS_SWIFT_NAME(save(_:completion:on:));
15+
16+
- (void)saveContext:(NSManagedObjectContext *)context
17+
withCompletionBlock:(void (^ _Nullable)(void))completionBlock
18+
onQueue:(dispatch_queue_t)queue NS_SWIFT_NAME(save(_:completion:on:));
1219

1320
/// Execute the given block with a background context and save the changes.
1421
///
@@ -27,7 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
2734
/// - aBlock: A block which uses the given `NSManagedObjectContext` to make Core Data model changes.
2835
/// - completion: A block which is called after the changes made by the `block` are saved.
2936
/// - queue: A queue on which to execute the `completion` block.
30-
- (void)performAndSaveUsingBlock:(void (^)(NSManagedObjectContext *context))aBlock completion:(void (^ _Nullable)(void))completion onQueue:(dispatch_queue_t)queue;
37+
- (void)performAndSaveUsingBlock:(void (^)(NSManagedObjectContext *context))aBlock
38+
completion:(void (^ _Nullable)(void))completion onQueue:(dispatch_queue_t)queue;
3139

3240
@end
3341

WordPress/Classes/Categories/Media+Extensions.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#import "Media+Extensions.h"
22
#import "MediaService.h"
33
#import "Blog.h"
4-
#import "CoreDataStack.h"
4+
@import WordPressDataObjC;
55
#import "WordPress-Swift.h"
66

77
@implementation Media (Extensions)

WordPress/Classes/Extensions/Media/Media+Sync.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Foundation
22
import CoreData
3+
import WordPressData
34

45
extension Media {
56

WordPress/Classes/Login/WordPressDotComAuthenticator.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import Alamofire
12
import AuthenticationServices
23
import Foundation
34
import UIKit
4-
5-
import Alamofire
5+
import WordPressData
66

77
/// Log in or sign up a WordPress.com account via web.
88
///

WordPress/Classes/Models/AbstractPost.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import "AbstractPost.h"
22
#import "Media.h"
3-
#import "CoreDataStack.h"
3+
@import WordPressDataObjC;
44
#import "WordPress-Swift.h"
55
#import "BasePost.h"
66

WordPress/Classes/Models/BasePost.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import "BasePost.h"
22
#import "Media.h"
3-
#import "CoreDataStack.h"
3+
@import WordPressDataObjC;
44

55
@import WordPressShared;
66

WordPress/Classes/Models/Blog/Blog.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#import "Blog.h"
22
#import "WPAccount.h"
33
#import "AccountService.h"
4-
#import "CoreDataStack.h"
4+
@import WordPressDataObjC;
55
#import "Constants.h"
66
#import "WPUserAgent.h"
77
#import "WordPress-Swift.h"

WordPress/Classes/Models/Coordinate.h

-14
This file was deleted.

WordPress/Classes/Models/Coordinate.m

-48
This file was deleted.

WordPress/Classes/Models/Media.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import "Media.h"
2-
#import "CoreDataStack.h"
2+
@import WordPressDataObjC;
33
#import "WordPress-Swift.h"
44

55
@implementation Media

WordPress/Classes/Models/ReaderPost.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import "ReaderPost.h"
22
#import "AccountService.h"
3-
#import "CoreDataStack.h"
3+
@import WordPressDataObjC;
44
#import "SourcePostAttribution.h"
55
#import "WPAccount.h"
66
#import "WordPress-Swift.h"

WordPress/Classes/Models/Theme.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import "Theme.h"
22
#import "Blog.h"
3-
#import "CoreDataStack.h"
3+
@import WordPressDataObjC;
44
#import "WPAccount.h"
55
#import "AccountService.h"
66
#import "WordPress-Swift.h"

WordPress/Classes/Models/ValueTransformers.swift

-17
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,11 @@ import Foundation
33
extension ValueTransformer {
44
@objc
55
static func registerCustomTransformers() {
6-
CoordinateValueTransformer.register()
76
NSErrorValueTransformer.register()
87
SetValueTransformer.register()
98
}
109
}
1110

12-
@objc
13-
final class CoordinateValueTransformer: NSSecureUnarchiveFromDataTransformer {
14-
15-
static let name = NSValueTransformerName(rawValue: String(describing: CoordinateValueTransformer.self))
16-
17-
override static var allowedTopLevelClasses: [AnyClass] {
18-
return [Coordinate.self]
19-
}
20-
21-
@objc
22-
public static func register() {
23-
let transformer = CoordinateValueTransformer()
24-
ValueTransformer.setValueTransformer(transformer, forName: name)
25-
}
26-
}
27-
2811
@objc
2912
final class NSErrorValueTransformer: NSSecureUnarchiveFromDataTransformer {
3013

WordPress/Classes/Services/AccountService.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import <Foundation/Foundation.h>
2-
#import "CoreDataService.h"
2+
@import WordPressDataObjC;
33

44
NS_ASSUME_NONNULL_BEGIN
55

WordPress/Classes/Services/AccountService.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import "AccountService.h"
22
#import "WPAccount.h"
3-
#import "CoreDataStack.h"
3+
@import WordPressDataObjC;
44
#import "Blog.h"
55
#import "BlogService.h"
66

WordPress/Classes/Services/AccountSettingsService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Foundation
22
import Reachability
3+
import WordPressData
34
import WordPressKit
45

56
extension NSNotification.Name {

WordPress/Classes/Services/AtomicSiteService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23
import WordPressKit
34

45
final class AtomicSiteService {

WordPress/Classes/Services/BlazeService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23
import WordPressKit
34

45
protocol BlazeServiceProtocol {

WordPress/Classes/Services/BlockEditorSettingsService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23
import WordPressKit
34

45
class BlockEditorSettingsService {

WordPress/Classes/Services/BlogService+Reminders.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23

34
extension BlogService {
45
@objc func unscheduleBloggingReminders(for blog: Blog) {

WordPress/Classes/Services/BlogService.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#import <Foundation/Foundation.h>
2-
#import "CoreDataService.h"
32
#import "Blog.h"
3+
@import WordPressDataObjC;
44

55
NS_ASSUME_NONNULL_BEGIN
66

WordPress/Classes/Services/BlogService.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#import "Blog.h"
33
#import "WPAccount.h"
44
#import "AccountService.h"
5-
#import "CoreDataStack.h"
5+
@import WordPressDataObjC;
66
#import "WPError.h"
77
#import "Media.h"
88
#import "PostCategoryService.h"

WordPress/Classes/Services/BloggingPrompts/BloggingPromptsService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import CoreData
2+
import WordPressData
23
import WordPressKit
34

45
class BloggingPromptsService {

WordPress/Classes/Services/CommentService.h

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import <Foundation/Foundation.h>
22
#import "CoreDataService.h"
3+
@import WordPressDataObjC;
34

45
NS_ASSUME_NONNULL_BEGIN
56

WordPress/Classes/Services/CommentService.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#import "CommentService.h"
22
#import "AccountService.h"
33
#import "Blog.h"
4-
#import "CoreDataStack.h"
4+
@import WordPressDataObjC;
55
#import "ReaderPost.h"
66
#import "WPAccount.h"
77
#import "PostService.h"

WordPress/Classes/Services/EditorSettingsService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23
import WordPressKit
34

45
@objc enum EditorSettingsServiceError: Int, Swift.Error {

WordPress/Classes/Services/Facades/BlogSyncFacade.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import "BlogSyncFacade.h"
2-
#import "CoreDataStack.h"
2+
@import WordPressDataObjC;
33
#import "BlogService.h"
44
#import "AccountService.h"
55
#import "Blog.h"

WordPress/Classes/Services/JetpackSocialService.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import WordPressKit
21
import CoreData
2+
import WordPressData
3+
import WordPressKit
34

45
@objc class JetpackSocialService: NSObject {
56

WordPress/Classes/Services/MediaCoordinator.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressData
23
import WordPressFlux
34

45
import class AutomatticTracks.CrashLogging

0 commit comments

Comments
 (0)