Create LocalAccount module.
This commit is contained in:
parent
300ffbb711
commit
6b364f3fd3
@ -24,6 +24,7 @@ let package = Package(
|
|||||||
.package(path: "../CloudKitSync"),
|
.package(path: "../CloudKitSync"),
|
||||||
.package(path: "../NewsBlur"),
|
.package(path: "../NewsBlur"),
|
||||||
.package(path: "../Feedbin"),
|
.package(path: "../Feedbin"),
|
||||||
|
.package(path: "../LocalAccount"),
|
||||||
.package(path: "../FeedFinder"),
|
.package(path: "../FeedFinder"),
|
||||||
.package(path: "../CommonErrors")
|
.package(path: "../CommonErrors")
|
||||||
],
|
],
|
||||||
@ -44,6 +45,7 @@ let package = Package(
|
|||||||
"NewsBlur",
|
"NewsBlur",
|
||||||
"CloudKitSync",
|
"CloudKitSync",
|
||||||
"Feedbin",
|
"Feedbin",
|
||||||
|
"LocalAccount",
|
||||||
"FeedFinder",
|
"FeedFinder",
|
||||||
"CommonErrors"
|
"CommonErrors"
|
||||||
],
|
],
|
||||||
|
@ -13,7 +13,6 @@ let package = Package(
|
|||||||
dependencies: [
|
dependencies: [
|
||||||
.package(path: "../Parser"),
|
.package(path: "../Parser"),
|
||||||
],
|
],
|
||||||
|
|
||||||
targets: [
|
targets: [
|
||||||
.target(
|
.target(
|
||||||
name: "Feedbin",
|
name: "Feedbin",
|
||||||
|
8
LocalAccount/.gitignore
vendored
Normal file
8
LocalAccount/.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
|
32
LocalAccount/Package.swift
Normal file
32
LocalAccount/Package.swift
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// swift-tools-version: 5.10
|
||||||
|
|
||||||
|
import PackageDescription
|
||||||
|
|
||||||
|
let package = Package(
|
||||||
|
name: "LocalAccount",
|
||||||
|
platforms: [.macOS(.v14), .iOS(.v17)],
|
||||||
|
products: [
|
||||||
|
.library(
|
||||||
|
name: "LocalAccount",
|
||||||
|
targets: ["LocalAccount"]),
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
.package(path: "../Parser"),
|
||||||
|
.package(path: "../Web"),
|
||||||
|
],
|
||||||
|
targets: [
|
||||||
|
.target(
|
||||||
|
name: "LocalAccount",
|
||||||
|
dependencies: [
|
||||||
|
"Parser",
|
||||||
|
"Web"
|
||||||
|
],
|
||||||
|
swiftSettings: [
|
||||||
|
.enableExperimentalFeature("StrictConcurrency")
|
||||||
|
]
|
||||||
|
),
|
||||||
|
.testTarget(
|
||||||
|
name: "LocalAccountTests",
|
||||||
|
dependencies: ["LocalAccount"]),
|
||||||
|
]
|
||||||
|
)
|
@ -10,9 +10,9 @@ import Foundation
|
|||||||
import Parser
|
import Parser
|
||||||
import Web
|
import Web
|
||||||
|
|
||||||
struct InitialFeedDownloader {
|
public struct InitialFeedDownloader {
|
||||||
|
|
||||||
static func download(_ url: URL) async -> ParsedFeed? {
|
@MainActor public static func download(_ url: URL) async -> ParsedFeed? {
|
||||||
|
|
||||||
await withCheckedContinuation { @MainActor continuation in
|
await withCheckedContinuation { @MainActor continuation in
|
||||||
self.download(url) { parsedFeed in
|
self.download(url) { parsedFeed in
|
||||||
@ -21,7 +21,7 @@ struct InitialFeedDownloader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@MainActor static func download(_ url: URL,_ completion: @escaping (_ parsedFeed: ParsedFeed?) -> Void) {
|
@MainActor static func download(_ url: URL,_ completion: @escaping @Sendable (_ parsedFeed: ParsedFeed?) -> Void) {
|
||||||
|
|
||||||
downloadUsingCache(url) { (data, response, error) in
|
downloadUsingCache(url) { (data, response, error) in
|
||||||
guard let data = data else {
|
guard let data = data else {
|
12
LocalAccount/Tests/LocalAccountTests/LocalAccountTests.swift
Normal file
12
LocalAccount/Tests/LocalAccountTests/LocalAccountTests.swift
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import XCTest
|
||||||
|
@testable import LocalAccount
|
||||||
|
|
||||||
|
final class LocalAccountTests: 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
|
||||||
|
}
|
||||||
|
}
|
@ -1391,6 +1391,7 @@
|
|||||||
84A37CB4201ECD610087C5AF /* RenameWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RenameWindowController.swift; sourceTree = "<group>"; };
|
84A37CB4201ECD610087C5AF /* RenameWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RenameWindowController.swift; sourceTree = "<group>"; };
|
||||||
84A3EE52223B667F00557320 /* DefaultFeeds.opml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DefaultFeeds.opml; sourceTree = "<group>"; };
|
84A3EE52223B667F00557320 /* DefaultFeeds.opml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DefaultFeeds.opml; sourceTree = "<group>"; };
|
||||||
84A699132BC34E8500605AB8 /* ArticleExtractor */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ArticleExtractor; sourceTree = "<group>"; };
|
84A699132BC34E8500605AB8 /* ArticleExtractor */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ArticleExtractor; sourceTree = "<group>"; };
|
||||||
|
84A699182BC3524C00605AB8 /* LocalAccount */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = LocalAccount; sourceTree = "<group>"; };
|
||||||
84AD1EA92031617300BC20B7 /* PasteboardFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasteboardFolder.swift; sourceTree = "<group>"; };
|
84AD1EA92031617300BC20B7 /* PasteboardFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasteboardFolder.swift; sourceTree = "<group>"; };
|
||||||
84AD1EB92031649C00BC20B7 /* SmartFeedPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedPasteboardWriter.swift; sourceTree = "<group>"; };
|
84AD1EB92031649C00BC20B7 /* SmartFeedPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedPasteboardWriter.swift; sourceTree = "<group>"; };
|
||||||
84AD1EBB2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarOutlineDataSource.swift; sourceTree = "<group>"; };
|
84AD1EBB2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarOutlineDataSource.swift; sourceTree = "<group>"; };
|
||||||
@ -2350,6 +2351,7 @@
|
|||||||
84A699132BC34E8500605AB8 /* ArticleExtractor */,
|
84A699132BC34E8500605AB8 /* ArticleExtractor */,
|
||||||
51CD32C624D2DEF9009ABAEF /* Account */,
|
51CD32C624D2DEF9009ABAEF /* Account */,
|
||||||
84FB9FAE2BC3494B00B7AFC3 /* FeedFinder */,
|
84FB9FAE2BC3494B00B7AFC3 /* FeedFinder */,
|
||||||
|
84A699182BC3524C00605AB8 /* LocalAccount */,
|
||||||
84FB9FAD2BC344F800B7AFC3 /* Feedbin */,
|
84FB9FAD2BC344F800B7AFC3 /* Feedbin */,
|
||||||
84FB9FAC2BC33AFE00B7AFC3 /* NewsBlur */,
|
84FB9FAC2BC33AFE00B7AFC3 /* NewsBlur */,
|
||||||
84CC98D92BC1DD25006A05C9 /* ReaderAPI */,
|
84CC98D92BC1DD25006A05C9 /* ReaderAPI */,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user