Tusker/Tusker/Screens/Timeline/InstanceTimelineViewControl...

72 lines
2.2 KiB
Swift

//
// 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)
}
}
}