Create CloudKitSync module and start moving files there.
This commit is contained in:
parent
057d35030b
commit
079392b6d8
@ -21,6 +21,7 @@ let package = Package(
|
||||
.package(path: "../Core"),
|
||||
.package(path: "../CloudKitExtras"),
|
||||
.package(path: "../ReaderAPI"),
|
||||
.package(path: "../CloudKitSync"),
|
||||
.package(path: "../CommonErrors")
|
||||
],
|
||||
targets: [
|
||||
@ -37,6 +38,7 @@ let package = Package(
|
||||
"Core",
|
||||
"CloudKitExtras",
|
||||
"ReaderAPI",
|
||||
"CloudKitSync",
|
||||
"CommonErrors"
|
||||
],
|
||||
swiftSettings: [
|
||||
|
@ -14,6 +14,7 @@ import CloudKit
|
||||
import Articles
|
||||
import SyncDatabase
|
||||
import CloudKitExtras
|
||||
import CloudKitSync
|
||||
|
||||
final class CloudKitArticlesZone: CloudKitZone {
|
||||
|
||||
|
@ -14,6 +14,7 @@ import SyncDatabase
|
||||
import Database
|
||||
import Core
|
||||
import CloudKitExtras
|
||||
import CloudKitSync
|
||||
|
||||
class CloudKitSendStatusOperation: MainThreadOperation {
|
||||
|
||||
|
8
CloudKitSync/.gitignore
vendored
Normal file
8
CloudKitSync/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
.DS_Store
|
||||
/.build
|
||||
/Packages
|
||||
xcuserdata/
|
||||
DerivedData/
|
||||
.swiftpm/configuration/registries.json
|
||||
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
|
||||
.netrc
|
31
CloudKitSync/Package.swift
Normal file
31
CloudKitSync/Package.swift
Normal file
@ -0,0 +1,31 @@
|
||||
// swift-tools-version: 5.10
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "CloudKitSync",
|
||||
platforms: [.macOS(.v14), .iOS(.v17)],
|
||||
products: [
|
||||
.library(
|
||||
name: "CloudKitSync",
|
||||
targets: ["CloudKitSync"]),
|
||||
],
|
||||
dependencies: [
|
||||
.package(path: "../CloudKitExtras"),
|
||||
.package(path: "../SyncDatabase"),
|
||||
.package(path: "../Articles")
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "CloudKitSync",
|
||||
dependencies: [
|
||||
"CloudKitExtras",
|
||||
"SyncDatabase",
|
||||
"Articles"
|
||||
]
|
||||
),
|
||||
.testTarget(
|
||||
name: "CloudKitSyncTests",
|
||||
dependencies: ["CloudKitSync"]),
|
||||
]
|
||||
)
|
@ -9,16 +9,16 @@
|
||||
import Foundation
|
||||
import CloudKit
|
||||
|
||||
extension CKRecord {
|
||||
|
||||
public extension CKRecord {
|
||||
|
||||
var externalID: String {
|
||||
return recordID.externalID
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension CKRecord.ID {
|
||||
|
||||
public extension CKRecord.ID {
|
||||
|
||||
var externalID: String {
|
||||
return recordName
|
||||
}
|
@ -10,20 +10,20 @@ import Foundation
|
||||
import SyncDatabase
|
||||
import Articles
|
||||
|
||||
struct CloudKitArticleStatusUpdate {
|
||||
public struct CloudKitArticleStatusUpdate {
|
||||
|
||||
enum Record {
|
||||
public enum Record: Sendable {
|
||||
case all
|
||||
case new
|
||||
case statusOnly
|
||||
case delete
|
||||
}
|
||||
|
||||
var articleID: String
|
||||
var statuses: [SyncStatus]
|
||||
var article: Article?
|
||||
|
||||
init?(articleID: String, statuses: [SyncStatus], article: Article?) {
|
||||
public var articleID: String
|
||||
public var statuses: [SyncStatus]
|
||||
public var article: Article?
|
||||
|
||||
public init?(articleID: String, statuses: [SyncStatus], article: Article?) {
|
||||
self.articleID = articleID
|
||||
self.statuses = statuses
|
||||
self.article = article
|
||||
@ -35,7 +35,7 @@ struct CloudKitArticleStatusUpdate {
|
||||
}
|
||||
}
|
||||
|
||||
var record: Record {
|
||||
public var record: Record {
|
||||
if statuses.contains(where: { $0.key == .deleted }) {
|
||||
return .delete
|
||||
}
|
||||
@ -53,18 +53,17 @@ struct CloudKitArticleStatusUpdate {
|
||||
return .statusOnly
|
||||
}
|
||||
|
||||
var isRead: Bool {
|
||||
public var isRead: Bool {
|
||||
if let article = article {
|
||||
return article.status.read
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
var isStarred: Bool {
|
||||
public var isStarred: Bool {
|
||||
if let article = article {
|
||||
return article.status.starred
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
12
CloudKitSync/Tests/CloudKitSyncTests/CloudKitSyncTests.swift
Normal file
12
CloudKitSync/Tests/CloudKitSyncTests/CloudKitSyncTests.swift
Normal file
@ -0,0 +1,12 @@
|
||||
import XCTest
|
||||
@testable import CloudKitSync
|
||||
|
||||
final class CloudKitSyncTests: XCTestCase {
|
||||
func testExample() throws {
|
||||
// XCTest Documentation
|
||||
// https://developer.apple.com/documentation/xctest
|
||||
|
||||
// Defining Test Cases and Test Methods
|
||||
// https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods
|
||||
}
|
||||
}
|
@ -1337,6 +1337,7 @@
|
||||
845B14A51FC2299E0013CF92 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
845EE7B01FC2366500854A1F /* StarredFeedDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StarredFeedDelegate.swift; sourceTree = "<group>"; };
|
||||
845EE7C01FC2488C00854A1F /* SmartFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeed.swift; sourceTree = "<group>"; };
|
||||
845F3D2B2BC268FE00AEBB68 /* CloudKitSync */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = CloudKitSync; sourceTree = "<group>"; };
|
||||
846799F42BBD120A000854CB /* Parser */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Parser; sourceTree = "<group>"; };
|
||||
84702AA31FA27AC0006B8943 /* MarkStatusCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkStatusCommand.swift; sourceTree = "<group>"; };
|
||||
847120D62B8AE6AF00BBFC34 /* UTType+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UTType+Extensions.swift"; sourceTree = "<group>"; };
|
||||
@ -2357,10 +2358,11 @@
|
||||
51C452B22265141B00C03939 /* Frameworks */,
|
||||
51CD32C624D2DEF9009ABAEF /* Account */,
|
||||
84CC98D92BC1DD25006A05C9 /* ReaderAPI */,
|
||||
845F3D2B2BC268FE00AEBB68 /* CloudKitSync */,
|
||||
8410C4A62BC221C900D4F799 /* CommonErrors */,
|
||||
51CD32C724D2E06C009ABAEF /* Secrets */,
|
||||
51CD32C424D2CF1D009ABAEF /* Articles */,
|
||||
51CD32C324D2CD57009ABAEF /* ArticlesDatabase */,
|
||||
51CD32C724D2E06C009ABAEF /* Secrets */,
|
||||
51CD32A824D2CB25009ABAEF /* SyncDatabase */,
|
||||
841550F42B9E3F8000D4B345 /* Database */,
|
||||
841550F52B9E4D6800D4B345 /* FMDB */,
|
||||
|
Loading…
x
Reference in New Issue
Block a user