// // InstanceTimelineViewController.swift // Tusker // // Created by Shadowfacts on 12/19/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import UIKit protocol InstanceTimelineViewControllerDelegate { func didSaveInstance(url: URL) func didUnsaveInstance(url: URL) } class InstanceTimelineViewController: TimelineTableViewController { var delegate: InstanceTimelineViewControllerDelegate? let instanceURL: URL var toggleSaveButton: UIBarButtonItem! var toggleSaveButtonTitle: String { if SavedInstanceManager.shared.isSaved(instanceURL) { return NSLocalizedString("Unsave", comment: "unsave instance button") } else { return NSLocalizedString("Save", comment: "save instance button") } } init(for url: URL) { self.instanceURL = url super.init(for: .instance(instanceURL: url)) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() toggleSaveButton = UIBarButtonItem(title: toggleSaveButtonTitle, style: .plain, target: self, action: #selector(toggleSaveButtonPressed)) navigationItem.rightBarButtonItem = toggleSaveButton NotificationCenter.default.addObserver(self, selector: #selector(savedInstancesChanged), name: .savedInstancesChanged, object: nil) } @objc func savedInstancesChanged() { toggleSaveButton.title = toggleSaveButtonTitle } // MARK: - Table view delegate override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // no-op, we don't currently support viewing whole conversations from other instances } // MARK: - Interaction @objc func toggleSaveButtonPressed() { if SavedInstanceManager.shared.isSaved(instanceURL) { SavedInstanceManager.shared.remove(instanceURL) delegate?.didUnsaveInstance(url: instanceURL) } else { SavedInstanceManager.shared.add(instanceURL) delegate?.didSaveInstance(url: instanceURL) } } }