mastodon-app-ufficiale-ipho.../Mastodon/Scene/Profile/FollowedTags/FollowedTagsViewController....

92 lines
2.7 KiB
Swift
Raw Normal View History

2022-11-22 14:15:41 +01:00
//
// FollowedTagsViewController.swift
// Mastodon
//
// Created by Marcus Kida on 22.11.22.
//
import UIKit
import MastodonAsset
import MastodonCore
import MastodonUI
import MastodonLocalization
final class FollowedTagsViewController: UIViewController, NeedsDependency {
var context: AppContext!
var coordinator: SceneCoordinator!
let authContext: AuthContext
var viewModel: FollowedTagsViewModel
2022-11-22 14:15:41 +01:00
2022-11-25 13:07:28 +01:00
let titleView = DoubleTitleLabelNavigationBarTitleView()
let tableView: UITableView
2023-11-10 13:28:37 +01:00
let refreshControl: UIRefreshControl
init(appContext: AppContext, sceneCoordinator: SceneCoordinator, authContext: AuthContext, viewModel: FollowedTagsViewModel) {
self.context = appContext
self.coordinator = sceneCoordinator
self.authContext = authContext
self.viewModel = viewModel
2022-11-25 13:07:28 +01:00
2023-11-10 13:28:37 +01:00
refreshControl = UIRefreshControl()
tableView = UITableView()
tableView.register(FollowedTagsTableViewCell.self, forCellReuseIdentifier: FollowedTagsTableViewCell.reuseIdentifier)
tableView.translatesAutoresizingMaskIntoConstraints = false
2022-11-22 14:15:41 +01:00
tableView.rowHeight = UITableView.automaticDimension
tableView.separatorStyle = .none
tableView.backgroundColor = .clear
2023-11-10 13:28:37 +01:00
tableView.refreshControl = refreshControl
2022-11-25 13:07:28 +01:00
super.init(nibName: nil, bundle: nil)
2023-11-10 13:52:49 +01:00
title = L10n.Scene.FollowedTags.title
2023-09-27 15:08:12 +02:00
view.backgroundColor = .secondarySystemBackground
2022-11-25 13:07:28 +01:00
view.addSubview(tableView)
tableView.pinToParent()
tableView.delegate = self
2023-11-10 13:28:37 +01:00
refreshControl.addTarget(self, action: #selector(FollowedTagsViewController.refresh(_:)), for: .valueChanged)
}
required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
override func viewDidLoad() {
super.viewDidLoad()
2022-11-25 13:07:28 +01:00
viewModel.setupTableView(tableView)
}
2023-11-10 13:28:37 +01:00
//MARK: - Actions
@objc
func refresh(_ sender: UIRefreshControl) {
viewModel.fetchFollowedTags(completion: {
DispatchQueue.main.async {
self.refreshControl.endRefreshing()
}
})
}
}
extension FollowedTagsViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let object = viewModel.followedTags[indexPath.row]
let hashtagTimelineViewModel = HashtagTimelineViewModel(
context: self.context,
authContext: self.authContext,
hashtag: object.name
)
_ = self.coordinator.present(
scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel),
from: self,
transition: .show
)
2022-11-25 13:07:28 +01:00
}
}