[ABANDONED] Mastodon iOS client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.7 KiB

//
// InstanceViewController.swift
// elpha-ios
//
// Created by Dwayne Harris on 9/17/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import AlamofireImage
import UIKit
import SafariServices
class InstanceViewController: UIViewController, SFSafariViewControllerDelegate {
@IBOutlet var thumbnailImageView: UIImageView!
@IBOutlet var instanceDescriptionLabel: UILabel!
@IBOutlet var webViewButton: UIButton!
@IBOutlet var usersLabel: UILabel!
@IBOutlet var statusesLabel: UILabel!
@IBOutlet var connectionsLabel: UILabel!
@IBOutlet var uptimeLabel: UILabel!
var instance: ISInstanceMO? = nil
override var previewActionItems: [UIPreviewActionItem] {
let action = UIPreviewAction(title: "Go to website", style: .default) { action, viewController in
self.presentSafariViewController()
}
return [action]
}
@IBAction func goToWebsite(_ sender: Any) {
presentSafariViewController()
}
@objc func presentSafariViewController() {
guard let instance = instance, let url = instance.url else {
return
}
let safariViewController = SFSafariViewController(url: url)
safariViewController.delegate = self
present(safariViewController, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
webViewButton.layer.cornerRadius = 15
if let instance = instance, let name = instance.name {
navigationItem.title = name
}
navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "Globe"), style: .plain, target: self, action: #selector(presentSafariViewController))
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let instance = self.instance else {
fatalError("No instance")
}
if (instance.fullDescription ?? "").isEmpty {
instanceDescriptionLabel.text = "(No description)"
} else {
instanceDescriptionLabel.text = instance.fullDescription
}
usersLabel.text = NumberFormatter.localizedString(from: NSNumber(value: instance.users), number: .decimal)
statusesLabel.text = NumberFormatter.localizedString(from: NSNumber(value: instance.statuses), number: .decimal)
connectionsLabel.text = NumberFormatter.localizedString(from: NSNumber(value: instance.connections), number: .decimal)
uptimeLabel.text = String(instance.uptime)
if let thumbnail = instance.thumbnail {
thumbnailImageView.af_setImage(withURL: thumbnail)
}
}
}