diff --git a/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift b/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift index 7df678b80..5e01774dd 100644 --- a/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift +++ b/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift @@ -152,6 +152,11 @@ extension LocalAccountDelegate: FeedFinderDelegate { return } + if account.hasFeed(withURL: bestFeedSpecifier.urlString) { + createFeedCompletion!(.failure(AccountError.createErrorAlreadySubscribed)) + return + } + let feed = account.createFeed(with: nil, url: url.absoluteString, feedID: url.absoluteString, homePageURL: nil) InitialFeedDownloader.download(url) { [weak self] parsedFeed in if let parsedFeed = parsedFeed { diff --git a/iOS/Add/AddFeedViewController.swift b/iOS/Add/AddFeedViewController.swift index ade219a2b..13dc65c26 100644 --- a/iOS/Add/AddFeedViewController.swift +++ b/iOS/Add/AddFeedViewController.swift @@ -93,25 +93,22 @@ class AddFeedViewController: UITableViewController, AddContainerViewControllerCh account!.createFeed(url: url.absoluteString) { [weak self] result in switch result { - case .success(let createFeedResult): - switch createFeedResult { - case .created(let feed): - self?.processFeed(feed, account: account!, folder: folder, url: url, title: title) - case .multipleChoice(let feedChoices): - print() - self?.delegate?.processingDidCancel() - case .alreadySubscribed: + case .success(let feed): + self?.processFeed(feed, account: account!, folder: folder, url: url, title: title) + case .failure(let error): + switch error { + case AccountError.createErrorAlreadySubscribed: self?.showAlreadySubscribedError() self?.delegate?.processingDidCancel() - case .notFound: + case AccountError.createErrorNotFound: self?.showNoFeedsErrorMessage() self?.delegate?.processingDidCancel() + default: + self?.presentError(error) + self?.delegate?.processingDidCancel() } - case .failure(let error): - self?.presentError(error) - self?.delegate?.processingDidCancel() } - + } }