74 lines
2.3 KiB
Swift
74 lines
2.3 KiB
Swift
//
|
|
// CloudKitAccountViewController.swift
|
|
// NetNewsWire-iOS
|
|
//
|
|
// Created by Maurice Parker on 3/28/20.
|
|
// Copyright © 2020 Ranchero Software. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import SafariServices
|
|
import Account
|
|
|
|
enum CloudKitAccountViewControllerError: LocalizedError {
|
|
case iCloudDriveMissing
|
|
|
|
var errorDescription: String? {
|
|
return NSLocalizedString("Unable to add iCloud Account. Please make sure you have iCloud and iCloud enabled in System Preferences.", comment: "Unable to add iCloud Account.")
|
|
}
|
|
}
|
|
|
|
class CloudKitAccountViewController: UITableViewController {
|
|
|
|
weak var delegate: AddAccountDismissDelegate?
|
|
@IBOutlet weak var footerLabel: UILabel!
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
setupFooter()
|
|
|
|
tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader")
|
|
}
|
|
|
|
private func setupFooter() {
|
|
footerLabel.text = NSLocalizedString("NetNewsWire will use your iCloud account to sync your subscriptions across your Mac and iOS devices.", comment: "iCloud")
|
|
}
|
|
|
|
@IBAction func cancel(_ sender: Any) {
|
|
dismiss(animated: true, completion: nil)
|
|
delegate?.dismiss()
|
|
}
|
|
|
|
@IBAction func add(_ sender: Any) {
|
|
guard FileManager.default.ubiquityIdentityToken != nil else {
|
|
presentError(CloudKitAccountViewControllerError.iCloudDriveMissing)
|
|
return
|
|
}
|
|
|
|
let _ = AccountManager.shared.createAccount(type: .cloudKit)
|
|
dismiss(animated: true, completion: nil)
|
|
delegate?.dismiss()
|
|
}
|
|
|
|
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
|
return section == 0 ? ImageHeaderView.rowHeight : super.tableView(tableView, heightForHeaderInSection: section)
|
|
}
|
|
|
|
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
|
if section == 0 {
|
|
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "SectionHeader") as! ImageHeaderView
|
|
headerView.imageView.image = AppAssets.image(for: .cloudKit)
|
|
return headerView
|
|
} else {
|
|
return super.tableView(tableView, viewForHeaderInSection: section)
|
|
}
|
|
}
|
|
|
|
@IBAction func openLimitationsAndSolutions(_ sender: Any) {
|
|
let vc = SFSafariViewController(url: CloudKitWebDocumentation.limitationsAndSolutionsURL)
|
|
vc.modalPresentationStyle = .pageSheet
|
|
present(vc, animated: true)
|
|
}
|
|
|
|
}
|