Add code that can add a feed to the first active account

This commit is contained in:
Maurice Parker
2019-10-18 19:37:41 -05:00
parent c49867cfe3
commit 2b4ff847d2
3 changed files with 98 additions and 5 deletions

View File

@@ -7,16 +7,47 @@
//
import Intents
import Account
public class AddFeedIntentHandler: NSObject, AddFeedIntentHandling {
override init() {
super.init()
DispatchQueue.main.sync {
AccountManager.shared = AccountManager()
}
}
public func resolveUrl(for intent: AddFeedIntent, with completion: @escaping (AddFeedUrlResolutionResult) -> Void) {
guard let url = intent.url else {
completion(.unsupported(forReason: .required))
return
}
completion(.success(with: url))
}
public func handle(intent: AddFeedIntent, completion: @escaping (AddFeedIntentResponse) -> Void) {
guard let url = intent.url else {
completion(AddFeedIntentResponse(code: .failure, userActivity: nil))
return
}
DispatchQueue.main.async {
guard let account = AccountManager.shared.activeAccounts.first else {
completion(AddFeedIntentResponse(code: .failure, userActivity: nil))
return
}
account.createFeed(url: url.absoluteString, name: nil, container: account) { result in
switch result {
case .success:
completion(AddFeedIntentResponse(code: .success, userActivity: nil))
case .failure:
completion(AddFeedIntentResponse(code: .failure, userActivity: nil))
}
}
}
}
public func resolveUrl(for intent: AddFeedIntent, with completion: @escaping (INURLResolutionResult) -> Void) {
}
}