Fix several build issues.

This commit is contained in:
Brent Simmons 2024-03-10 18:17:04 -07:00
parent 64dc45ef38
commit 917d433deb
15 changed files with 91 additions and 37 deletions

View File

@ -7,7 +7,8 @@ let package = Package(
products: [
.library(
name: "Account",
targets: ["Account"]),
type: .dynamic,
targets: ["Account"]),
],
dependencies: [
.package(url: "https://github.com/Ranchero-Software/RSCore.git", .upToNextMinor(from: "1.0.0")),

View File

@ -15,6 +15,7 @@ import CloudKit
import SyncDatabase
import Articles
import ArticlesDatabase
import Database
class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {

View File

@ -12,6 +12,7 @@ import os.log
import RSCore
import RSWeb
import SyncDatabase
import Database
class CloudKitSendStatusOperation: MainThreadOperation {

View File

@ -1163,54 +1163,63 @@ private extension FeedbinAccountDelegate {
os_log(.debug, log: log, "Refreshing missing articles...")
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 {
group.enter()
self.caller.retrieveEntries(articleIDs: chunk) { result in
Task { @MainActor in
switch result {
case .success(let entries):
@MainActor func process(_ fetchedArticleIDs: Set<String>) {
let group = DispatchGroup()
var errorOccurred = false
self.processEntries(account: account, entries: entries) { error in
group.leave()
if error != nil {
errorOccurred = true
let articleIDs = Array(fetchedArticleIDs)
let chunkedArticleIDs = articleIDs.chunked(into: 100)
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):
errorOccurred = true
os_log(.error, log: self.log, "Refresh missing articles failed: %@.", error.localizedDescription)
group.leave()
case .failure(let error):
errorOccurred = true
os_log(.error, log: self.log, "Refresh missing articles failed: %@.", error.localizedDescription)
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()
os_log(.debug, log: self.log, "Done refreshing missing articles.")
if errorOccurred {
completion(.failure(FeedbinAccountDelegateError.unknown))
} else {
completion(.success(()))
}
completion(.failure(error))
}
}
switch result {
case .success(let fetchedArticleIDs):
process(fetchedArticleIDs)
case .failure(let error):
self.refreshProgress.completeTask()
completion(.failure(error))
}
}
}

View File

@ -9,6 +9,7 @@
import Foundation
import os.log
import Secrets
import Database
/// Ensure a status exists for every article id the user might be interested in.
///

View File

@ -9,6 +9,7 @@
import Foundation
import RSParser
import os.log
import Database
/// Combine the articles with their feeds for a specific account.
final class FeedlyUpdateAccountFeedsWithItemsOperation: FeedlyOperation {

View File

@ -13,6 +13,7 @@ import RSWeb
import SyncDatabase
import os.log
import Secrets
import Database
public enum ReaderAPIAccountDelegateError: LocalizedError {
case unknown

View File

@ -7,6 +7,7 @@ let package = Package(
products: [
.library(
name: "Articles",
type: .dynamic,
targets: ["Articles"]),
],
dependencies: [

View File

@ -12,6 +12,7 @@ var dependencies: [Package.Dependency] = [
dependencies.append(contentsOf: [
.package(path: "../Articles"),
.package(path: "../Database"),
.package(path: "../FMDB"),
])
#else
dependencies.append(contentsOf: [
@ -25,6 +26,7 @@ let package = Package(
products: [
.library(
name: "ArticlesDatabase",
type: .dynamic,
targets: ["ArticlesDatabase"]),
],
dependencies: dependencies,
@ -36,6 +38,7 @@ let package = Package(
"Database",
"RSParser",
"Articles",
"FMDB",
]),
]
)

View File

@ -661,6 +661,8 @@
847120D92B8AE6AF00BBFC34 /* UTType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847120D62B8AE6AF00BBFC34 /* UTType+Extensions.swift */; };
8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8472058020142E8900AD578B /* FeedInspectorViewController.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 */; };
847E64A02262783000E00365 /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */; };
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 */; };
848363082262A3DD00DA1D35 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 848363062262A3DD00DA1D35 /* Main.storyboard */; };
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 */; };
848D578E21543519005FFAD5 /* PasteboardFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D578D21543519005FFAD5 /* PasteboardFeed.swift */; };
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; };
@ -1617,6 +1621,8 @@
51E4DB082425F9EB0091EB5B /* CloudKit.framework in Frameworks */,
513F32742593EE6F0003048F /* ArticlesDatabase in Frameworks */,
513F327A2593EE6F0003048F /* SyncDatabase in Frameworks */,
848565512B9E910200F4BAE0 /* FMDB in Frameworks */,
8485654F2B9E90FD00F4BAE0 /* Database in Frameworks */,
5138E93A24D33E5600AFF0FE /* RSTree in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -1630,6 +1636,7 @@
51A737C524DB19B50015FA66 /* RSWeb in Frameworks */,
514C16DE24D2EF15009A3AFA /* RSTree in Frameworks */,
5132775E2590FC640064F1E7 /* Articles in Frameworks */,
8479ABE32B9E906E00F84C4D /* Database in Frameworks */,
513277612590FC640064F1E7 /* ArticlesDatabase in Frameworks */,
51C4CFF624D37DD500AF9874 /* Secrets in Frameworks */,
51A737AE24DB19730015FA66 /* RSCore in Frameworks */,
@ -1637,6 +1644,7 @@
179C39EA26F76B0500D4E741 /* Zip in Frameworks */,
51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */,
514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */,
8479ABE52B9E907400F84C4D /* FMDB in Frameworks */,
514C16CE24D2E63F009A3AFA /* Account in Frameworks */,
519CA8E525841DB700EB079A /* CrashReporter in Frameworks */,
);
@ -2975,6 +2983,8 @@
513F32762593EE6F0003048F /* Secrets */,
513F32792593EE6F0003048F /* SyncDatabase */,
179D280A26F6F93D003B2E0A /* Zip */,
8485654E2B9E90FD00F4BAE0 /* Database */,
848565502B9E910200F4BAE0 /* FMDB */,
);
productName = "NetNewsWire-iOS";
productReference = 840D617C2029031C009BC708 /* NetNewsWire.app */;
@ -3016,6 +3026,8 @@
513277602590FC640064F1E7 /* ArticlesDatabase */,
513277632590FC640064F1E7 /* SyncDatabase */,
179C39E926F76B0500D4E741 /* Zip */,
8479ABE22B9E906E00F84C4D /* Database */,
8479ABE42B9E907400F84C4D /* FMDB */,
);
productName = NetNewsWire;
productReference = 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */;
@ -5017,6 +5029,22 @@
package = 653813412680E2DA007A082C /* XCRemoteSwiftPackageReference "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 */
};
rootObject = 849C64581ED37A5D003D8FC0 /* Project object */;

View File

@ -7,6 +7,7 @@ let package = Package(
products: [
.library(
name: "Secrets",
type: .dynamic,
targets: ["Secrets"]
)
],

View File

@ -11,6 +11,7 @@ import RSCore
import Articles
import ArticlesDatabase
import Account
import Database
final class SmartFeed: PseudoFeed {

View File

@ -11,6 +11,7 @@ import Account
import Articles
import ArticlesDatabase
import RSCore
import Database
protocol SmartFeedDelegate: SidebarItemIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
var fetchType: FetchType { get }

View File

@ -10,6 +10,7 @@ import Foundation
import RSCore
import Account
import Articles
import Database
// Main thread only.
// Runs an asynchronous fetch.

View File

@ -9,6 +9,7 @@ var dependencies: [Package.Dependency] = [
dependencies.append(contentsOf: [
.package(path: "../Articles"),
.package(path: "../Database"),
.package(path: "../FMDB"),
])
#else
dependencies.append(contentsOf: [
@ -22,6 +23,7 @@ let package = Package(
products: [
.library(
name: "SyncDatabase",
type: .dynamic,
targets: ["SyncDatabase"]),
],
dependencies: dependencies,
@ -32,6 +34,7 @@ let package = Package(
"RSCore",
"Database",
"Articles",
"FMDB"
],
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency")