Tusker/Tusker/Screens/Lists/ListTimelineViewController....

83 lines
2.4 KiB
Swift
Raw Normal View History

2019-12-17 23:48:29 +00:00
//
// ListTimelineViewController.swift
// Tusker
//
// Created by Shadowfacts on 12/17/19.
// Copyright © 2019 Shadowfacts. All rights reserved.
//
import UIKit
import Pachyderm
2022-11-19 19:08:39 +00:00
import Combine
2019-12-17 23:48:29 +00:00
class ListTimelineViewController: TimelineViewController {
2019-12-17 23:48:29 +00:00
private(set) var list: List
2019-12-17 23:48:29 +00:00
var presentEditOnAppear = false
2022-11-19 19:08:39 +00:00
private var listRenamedCancellable: AnyCancellable?
init(for list: List, mastodonController: MastodonController) {
2019-12-17 23:48:29 +00:00
self.list = list
super.init(for: .list(id: list.id), mastodonController: mastodonController)
2019-12-17 23:48:29 +00:00
listChanged()
2022-11-19 19:08:39 +00:00
listRenamedCancellable = mastodonController.$lists
.compactMap { $0.first { $0.id == list.id } }
.removeDuplicates(by: { $0.title == $1.title })
.sink { [unowned self] in
self.list = $0
self.listChanged()
}
2019-12-17 23:48:29 +00:00
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
2019-12-18 03:56:53 +00:00
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(editListButtonPressed))
2019-12-18 03:56:53 +00:00
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if presentEditOnAppear {
presentEdit(animated: animated)
}
}
2019-12-18 03:56:53 +00:00
private func listChanged() {
title = list.title
}
func presentEdit(animated: Bool) {
let editListAccountsController = EditListAccountsViewController(list: list, mastodonController: mastodonController)
editListAccountsController.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(editListDoneButtonPressed))
2019-12-18 03:56:53 +00:00
let navController = UINavigationController(rootViewController: editListAccountsController)
present(navController, animated: animated)
}
// MARK: - Interaction
@objc func editListButtonPressed() {
presentEdit(animated: true)
2019-12-18 03:56:53 +00:00
}
@objc func editListDoneButtonPressed() {
2019-12-18 03:56:53 +00:00
dismiss(animated: true)
// TODO: only reload if there were changes
Task {
applyInitialSnapshot()
await controller.loadInitial()
}
2019-12-18 03:56:53 +00:00
}
2019-12-17 23:48:29 +00:00
}