Fix several build issues.
This commit is contained in:
parent
64dc45ef38
commit
917d433deb
@ -7,7 +7,8 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "Account",
|
name: "Account",
|
||||||
targets: ["Account"]),
|
type: .dynamic,
|
||||||
|
targets: ["Account"]),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(url: "https://github.com/Ranchero-Software/RSCore.git", .upToNextMinor(from: "1.0.0")),
|
.package(url: "https://github.com/Ranchero-Software/RSCore.git", .upToNextMinor(from: "1.0.0")),
|
||||||
|
@ -15,6 +15,7 @@ import CloudKit
|
|||||||
import SyncDatabase
|
import SyncDatabase
|
||||||
import Articles
|
import Articles
|
||||||
import ArticlesDatabase
|
import ArticlesDatabase
|
||||||
|
import Database
|
||||||
|
|
||||||
class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {
|
class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import os.log
|
|||||||
import RSCore
|
import RSCore
|
||||||
import RSWeb
|
import RSWeb
|
||||||
import SyncDatabase
|
import SyncDatabase
|
||||||
|
import Database
|
||||||
|
|
||||||
class CloudKitSendStatusOperation: MainThreadOperation {
|
class CloudKitSendStatusOperation: MainThreadOperation {
|
||||||
|
|
||||||
|
@ -1163,54 +1163,63 @@ private extension FeedbinAccountDelegate {
|
|||||||
os_log(.debug, log: log, "Refreshing missing articles...")
|
os_log(.debug, log: log, "Refreshing missing articles...")
|
||||||
|
|
||||||
account.fetchArticleIDsForStatusesWithoutArticlesNewerThanCutoffDate { result in
|
account.fetchArticleIDsForStatusesWithoutArticlesNewerThanCutoffDate { result in
|
||||||
|
|
||||||
func process(_ fetchedArticleIDs: Set<String>) {
|
|
||||||
let group = DispatchGroup()
|
|
||||||
var errorOccurred = false
|
|
||||||
|
|
||||||
let articleIDs = Array(fetchedArticleIDs)
|
|
||||||
let chunkedArticleIDs = articleIDs.chunked(into: 100)
|
|
||||||
|
|
||||||
for chunk in chunkedArticleIDs {
|
Task { @MainActor in
|
||||||
group.enter()
|
|
||||||
self.caller.retrieveEntries(articleIDs: chunk) { result in
|
|
||||||
|
|
||||||
switch result {
|
@MainActor func process(_ fetchedArticleIDs: Set<String>) {
|
||||||
case .success(let entries):
|
let group = DispatchGroup()
|
||||||
|
var errorOccurred = false
|
||||||
|
|
||||||
self.processEntries(account: account, entries: entries) { error in
|
let articleIDs = Array(fetchedArticleIDs)
|
||||||
group.leave()
|
let chunkedArticleIDs = articleIDs.chunked(into: 100)
|
||||||
if error != nil {
|
|
||||||
errorOccurred = true
|
for chunk in chunkedArticleIDs {
|
||||||
|
group.enter()
|
||||||
|
self.caller.retrieveEntries(articleIDs: chunk) { result in
|
||||||
|
|
||||||
|
switch result {
|
||||||
|
case .success(let entries):
|
||||||
|
|
||||||
|
self.processEntries(account: account, entries: entries) { error in
|
||||||
|
|
||||||
|
Task { @MainActor in
|
||||||
|
|
||||||
|
group.leave()
|
||||||
|
if error != nil {
|
||||||
|
errorOccurred = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
case .failure(let error):
|
case .failure(let error):
|
||||||
errorOccurred = true
|
errorOccurred = true
|
||||||
os_log(.error, log: self.log, "Refresh missing articles failed: %@.", error.localizedDescription)
|
os_log(.error, log: self.log, "Refresh missing articles failed: %@.", error.localizedDescription)
|
||||||
group.leave()
|
group.leave()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group.notify(queue: DispatchQueue.main) {
|
||||||
|
Task { @MainActor in
|
||||||
|
self.refreshProgress.completeTask()
|
||||||
|
os_log(.debug, log: self.log, "Done refreshing missing articles.")
|
||||||
|
if errorOccurred {
|
||||||
|
completion(.failure(FeedbinAccountDelegateError.unknown))
|
||||||
|
} else {
|
||||||
|
completion(.success(()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
group.notify(queue: DispatchQueue.main) {
|
switch result {
|
||||||
|
case .success(let fetchedArticleIDs):
|
||||||
|
process(fetchedArticleIDs)
|
||||||
|
case .failure(let error):
|
||||||
self.refreshProgress.completeTask()
|
self.refreshProgress.completeTask()
|
||||||
os_log(.debug, log: self.log, "Done refreshing missing articles.")
|
completion(.failure(error))
|
||||||
if errorOccurred {
|
|
||||||
completion(.failure(FeedbinAccountDelegateError.unknown))
|
|
||||||
} else {
|
|
||||||
completion(.success(()))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch result {
|
|
||||||
case .success(let fetchedArticleIDs):
|
|
||||||
process(fetchedArticleIDs)
|
|
||||||
case .failure(let error):
|
|
||||||
self.refreshProgress.completeTask()
|
|
||||||
completion(.failure(error))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import os.log
|
import os.log
|
||||||
import Secrets
|
import Secrets
|
||||||
|
import Database
|
||||||
|
|
||||||
/// Ensure a status exists for every article id the user might be interested in.
|
/// Ensure a status exists for every article id the user might be interested in.
|
||||||
///
|
///
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import RSParser
|
import RSParser
|
||||||
import os.log
|
import os.log
|
||||||
|
import Database
|
||||||
|
|
||||||
/// Combine the articles with their feeds for a specific account.
|
/// Combine the articles with their feeds for a specific account.
|
||||||
final class FeedlyUpdateAccountFeedsWithItemsOperation: FeedlyOperation {
|
final class FeedlyUpdateAccountFeedsWithItemsOperation: FeedlyOperation {
|
||||||
|
@ -13,6 +13,7 @@ import RSWeb
|
|||||||
import SyncDatabase
|
import SyncDatabase
|
||||||
import os.log
|
import os.log
|
||||||
import Secrets
|
import Secrets
|
||||||
|
import Database
|
||||||
|
|
||||||
public enum ReaderAPIAccountDelegateError: LocalizedError {
|
public enum ReaderAPIAccountDelegateError: LocalizedError {
|
||||||
case unknown
|
case unknown
|
||||||
|
@ -7,6 +7,7 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "Articles",
|
name: "Articles",
|
||||||
|
type: .dynamic,
|
||||||
targets: ["Articles"]),
|
targets: ["Articles"]),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -12,6 +12,7 @@ var dependencies: [Package.Dependency] = [
|
|||||||
dependencies.append(contentsOf: [
|
dependencies.append(contentsOf: [
|
||||||
.package(path: "../Articles"),
|
.package(path: "../Articles"),
|
||||||
.package(path: "../Database"),
|
.package(path: "../Database"),
|
||||||
|
.package(path: "../FMDB"),
|
||||||
])
|
])
|
||||||
#else
|
#else
|
||||||
dependencies.append(contentsOf: [
|
dependencies.append(contentsOf: [
|
||||||
@ -25,6 +26,7 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "ArticlesDatabase",
|
name: "ArticlesDatabase",
|
||||||
|
type: .dynamic,
|
||||||
targets: ["ArticlesDatabase"]),
|
targets: ["ArticlesDatabase"]),
|
||||||
],
|
],
|
||||||
dependencies: dependencies,
|
dependencies: dependencies,
|
||||||
@ -36,6 +38,7 @@ let package = Package(
|
|||||||
"Database",
|
"Database",
|
||||||
"RSParser",
|
"RSParser",
|
||||||
"Articles",
|
"Articles",
|
||||||
|
"FMDB",
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -661,6 +661,8 @@
|
|||||||
847120D92B8AE6AF00BBFC34 /* UTType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847120D62B8AE6AF00BBFC34 /* UTType+Extensions.swift */; };
|
847120D92B8AE6AF00BBFC34 /* UTType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847120D62B8AE6AF00BBFC34 /* UTType+Extensions.swift */; };
|
||||||
8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8472058020142E8900AD578B /* FeedInspectorViewController.swift */; };
|
8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8472058020142E8900AD578B /* FeedInspectorViewController.swift */; };
|
||||||
8477ACBE22238E9500DF7F37 /* SearchFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8477ACBD22238E9500DF7F37 /* SearchFeedDelegate.swift */; };
|
8477ACBE22238E9500DF7F37 /* SearchFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8477ACBD22238E9500DF7F37 /* SearchFeedDelegate.swift */; };
|
||||||
|
8479ABE32B9E906E00F84C4D /* Database in Frameworks */ = {isa = PBXBuildFile; productRef = 8479ABE22B9E906E00F84C4D /* Database */; };
|
||||||
|
8479ABE52B9E907400F84C4D /* FMDB in Frameworks */ = {isa = PBXBuildFile; productRef = 8479ABE42B9E907400F84C4D /* FMDB */; };
|
||||||
847CD6CA232F4CBF00FAC46D /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847CD6C9232F4CBF00FAC46D /* IconView.swift */; };
|
847CD6CA232F4CBF00FAC46D /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847CD6C9232F4CBF00FAC46D /* IconView.swift */; };
|
||||||
847E64A02262783000E00365 /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */; };
|
847E64A02262783000E00365 /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */; };
|
||||||
848362FF2262A30E00DA1D35 /* template.html in Resources */ = {isa = PBXBuildFile; fileRef = 848362FE2262A30E00DA1D35 /* template.html */; };
|
848362FF2262A30E00DA1D35 /* template.html in Resources */ = {isa = PBXBuildFile; fileRef = 848362FE2262A30E00DA1D35 /* template.html */; };
|
||||||
@ -668,6 +670,8 @@
|
|||||||
848363052262A3CC00DA1D35 /* AddFolderSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */; };
|
848363052262A3CC00DA1D35 /* AddFolderSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */; };
|
||||||
848363082262A3DD00DA1D35 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 848363062262A3DD00DA1D35 /* Main.storyboard */; };
|
848363082262A3DD00DA1D35 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 848363062262A3DD00DA1D35 /* Main.storyboard */; };
|
||||||
8483630B2262A3F000DA1D35 /* RenameSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363092262A3F000DA1D35 /* RenameSheet.xib */; };
|
8483630B2262A3F000DA1D35 /* RenameSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363092262A3F000DA1D35 /* RenameSheet.xib */; };
|
||||||
|
8485654F2B9E90FD00F4BAE0 /* Database in Frameworks */ = {isa = PBXBuildFile; productRef = 8485654E2B9E90FD00F4BAE0 /* Database */; };
|
||||||
|
848565512B9E910200F4BAE0 /* FMDB in Frameworks */ = {isa = PBXBuildFile; productRef = 848565502B9E910200F4BAE0 /* FMDB */; };
|
||||||
848B937221C8C5540038DC0D /* CrashReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848B937121C8C5540038DC0D /* CrashReporter.swift */; };
|
848B937221C8C5540038DC0D /* CrashReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848B937121C8C5540038DC0D /* CrashReporter.swift */; };
|
||||||
848D578E21543519005FFAD5 /* PasteboardFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D578D21543519005FFAD5 /* PasteboardFeed.swift */; };
|
848D578E21543519005FFAD5 /* PasteboardFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D578D21543519005FFAD5 /* PasteboardFeed.swift */; };
|
||||||
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; };
|
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; };
|
||||||
@ -1617,6 +1621,8 @@
|
|||||||
51E4DB082425F9EB0091EB5B /* CloudKit.framework in Frameworks */,
|
51E4DB082425F9EB0091EB5B /* CloudKit.framework in Frameworks */,
|
||||||
513F32742593EE6F0003048F /* ArticlesDatabase in Frameworks */,
|
513F32742593EE6F0003048F /* ArticlesDatabase in Frameworks */,
|
||||||
513F327A2593EE6F0003048F /* SyncDatabase in Frameworks */,
|
513F327A2593EE6F0003048F /* SyncDatabase in Frameworks */,
|
||||||
|
848565512B9E910200F4BAE0 /* FMDB in Frameworks */,
|
||||||
|
8485654F2B9E90FD00F4BAE0 /* Database in Frameworks */,
|
||||||
5138E93A24D33E5600AFF0FE /* RSTree in Frameworks */,
|
5138E93A24D33E5600AFF0FE /* RSTree in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -1630,6 +1636,7 @@
|
|||||||
51A737C524DB19B50015FA66 /* RSWeb in Frameworks */,
|
51A737C524DB19B50015FA66 /* RSWeb in Frameworks */,
|
||||||
514C16DE24D2EF15009A3AFA /* RSTree in Frameworks */,
|
514C16DE24D2EF15009A3AFA /* RSTree in Frameworks */,
|
||||||
5132775E2590FC640064F1E7 /* Articles in Frameworks */,
|
5132775E2590FC640064F1E7 /* Articles in Frameworks */,
|
||||||
|
8479ABE32B9E906E00F84C4D /* Database in Frameworks */,
|
||||||
513277612590FC640064F1E7 /* ArticlesDatabase in Frameworks */,
|
513277612590FC640064F1E7 /* ArticlesDatabase in Frameworks */,
|
||||||
51C4CFF624D37DD500AF9874 /* Secrets in Frameworks */,
|
51C4CFF624D37DD500AF9874 /* Secrets in Frameworks */,
|
||||||
51A737AE24DB19730015FA66 /* RSCore in Frameworks */,
|
51A737AE24DB19730015FA66 /* RSCore in Frameworks */,
|
||||||
@ -1637,6 +1644,7 @@
|
|||||||
179C39EA26F76B0500D4E741 /* Zip in Frameworks */,
|
179C39EA26F76B0500D4E741 /* Zip in Frameworks */,
|
||||||
51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */,
|
51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */,
|
||||||
514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */,
|
514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */,
|
||||||
|
8479ABE52B9E907400F84C4D /* FMDB in Frameworks */,
|
||||||
514C16CE24D2E63F009A3AFA /* Account in Frameworks */,
|
514C16CE24D2E63F009A3AFA /* Account in Frameworks */,
|
||||||
519CA8E525841DB700EB079A /* CrashReporter in Frameworks */,
|
519CA8E525841DB700EB079A /* CrashReporter in Frameworks */,
|
||||||
);
|
);
|
||||||
@ -2975,6 +2983,8 @@
|
|||||||
513F32762593EE6F0003048F /* Secrets */,
|
513F32762593EE6F0003048F /* Secrets */,
|
||||||
513F32792593EE6F0003048F /* SyncDatabase */,
|
513F32792593EE6F0003048F /* SyncDatabase */,
|
||||||
179D280A26F6F93D003B2E0A /* Zip */,
|
179D280A26F6F93D003B2E0A /* Zip */,
|
||||||
|
8485654E2B9E90FD00F4BAE0 /* Database */,
|
||||||
|
848565502B9E910200F4BAE0 /* FMDB */,
|
||||||
);
|
);
|
||||||
productName = "NetNewsWire-iOS";
|
productName = "NetNewsWire-iOS";
|
||||||
productReference = 840D617C2029031C009BC708 /* NetNewsWire.app */;
|
productReference = 840D617C2029031C009BC708 /* NetNewsWire.app */;
|
||||||
@ -3016,6 +3026,8 @@
|
|||||||
513277602590FC640064F1E7 /* ArticlesDatabase */,
|
513277602590FC640064F1E7 /* ArticlesDatabase */,
|
||||||
513277632590FC640064F1E7 /* SyncDatabase */,
|
513277632590FC640064F1E7 /* SyncDatabase */,
|
||||||
179C39E926F76B0500D4E741 /* Zip */,
|
179C39E926F76B0500D4E741 /* Zip */,
|
||||||
|
8479ABE22B9E906E00F84C4D /* Database */,
|
||||||
|
8479ABE42B9E907400F84C4D /* FMDB */,
|
||||||
);
|
);
|
||||||
productName = NetNewsWire;
|
productName = NetNewsWire;
|
||||||
productReference = 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */;
|
productReference = 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */;
|
||||||
@ -5017,6 +5029,22 @@
|
|||||||
package = 653813412680E2DA007A082C /* XCRemoteSwiftPackageReference "RSCore" */;
|
package = 653813412680E2DA007A082C /* XCRemoteSwiftPackageReference "RSCore" */;
|
||||||
productName = RSCore;
|
productName = RSCore;
|
||||||
};
|
};
|
||||||
|
8479ABE22B9E906E00F84C4D /* Database */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
productName = Database;
|
||||||
|
};
|
||||||
|
8479ABE42B9E907400F84C4D /* FMDB */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
productName = FMDB;
|
||||||
|
};
|
||||||
|
8485654E2B9E90FD00F4BAE0 /* Database */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
productName = Database;
|
||||||
|
};
|
||||||
|
848565502B9E910200F4BAE0 /* FMDB */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
productName = FMDB;
|
||||||
|
};
|
||||||
/* End XCSwiftPackageProductDependency section */
|
/* End XCSwiftPackageProductDependency section */
|
||||||
};
|
};
|
||||||
rootObject = 849C64581ED37A5D003D8FC0 /* Project object */;
|
rootObject = 849C64581ED37A5D003D8FC0 /* Project object */;
|
||||||
|
@ -7,6 +7,7 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "Secrets",
|
name: "Secrets",
|
||||||
|
type: .dynamic,
|
||||||
targets: ["Secrets"]
|
targets: ["Secrets"]
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
@ -11,6 +11,7 @@ import RSCore
|
|||||||
import Articles
|
import Articles
|
||||||
import ArticlesDatabase
|
import ArticlesDatabase
|
||||||
import Account
|
import Account
|
||||||
|
import Database
|
||||||
|
|
||||||
final class SmartFeed: PseudoFeed {
|
final class SmartFeed: PseudoFeed {
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import Account
|
|||||||
import Articles
|
import Articles
|
||||||
import ArticlesDatabase
|
import ArticlesDatabase
|
||||||
import RSCore
|
import RSCore
|
||||||
|
import Database
|
||||||
|
|
||||||
protocol SmartFeedDelegate: SidebarItemIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
|
protocol SmartFeedDelegate: SidebarItemIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
|
||||||
var fetchType: FetchType { get }
|
var fetchType: FetchType { get }
|
||||||
|
@ -10,6 +10,7 @@ import Foundation
|
|||||||
import RSCore
|
import RSCore
|
||||||
import Account
|
import Account
|
||||||
import Articles
|
import Articles
|
||||||
|
import Database
|
||||||
|
|
||||||
// Main thread only.
|
// Main thread only.
|
||||||
// Runs an asynchronous fetch.
|
// Runs an asynchronous fetch.
|
||||||
|
@ -9,6 +9,7 @@ var dependencies: [Package.Dependency] = [
|
|||||||
dependencies.append(contentsOf: [
|
dependencies.append(contentsOf: [
|
||||||
.package(path: "../Articles"),
|
.package(path: "../Articles"),
|
||||||
.package(path: "../Database"),
|
.package(path: "../Database"),
|
||||||
|
.package(path: "../FMDB"),
|
||||||
])
|
])
|
||||||
#else
|
#else
|
||||||
dependencies.append(contentsOf: [
|
dependencies.append(contentsOf: [
|
||||||
@ -22,6 +23,7 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "SyncDatabase",
|
name: "SyncDatabase",
|
||||||
|
type: .dynamic,
|
||||||
targets: ["SyncDatabase"]),
|
targets: ["SyncDatabase"]),
|
||||||
],
|
],
|
||||||
dependencies: dependencies,
|
dependencies: dependencies,
|
||||||
@ -32,6 +34,7 @@ let package = Package(
|
|||||||
"RSCore",
|
"RSCore",
|
||||||
"Database",
|
"Database",
|
||||||
"Articles",
|
"Articles",
|
||||||
|
"FMDB"
|
||||||
],
|
],
|
||||||
swiftSettings: [
|
swiftSettings: [
|
||||||
.enableExperimentalFeature("StrictConcurrency")
|
.enableExperimentalFeature("StrictConcurrency")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user