Tusker/Tusker/Screens/Attachment Gallery/AttachmentPreviewViewContro...

61 lines
1.8 KiB
Swift

//
// AttachmentPreviewViewController.swift
// Tusker
//
// Created by Shadowfacts on 3/20/20.
// Copyright © 2020 Shadowfacts. All rights reserved.
//
import UIKit
import Pachyderm
import Gifu
class AttachmentPreviewViewController: UIViewController {
let attachment: Attachment
let createGallery: () -> GalleryViewController
init(attachment: Attachment, createGallery: @escaping () -> GalleryViewController) {
self.attachment = attachment
self.createGallery = createGallery
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadView() {
if let data = ImageCache.attachments.get(attachment.url),
let image = UIImage(data: data) {
let imageView: UIImageView
if attachment.url.pathExtension == "gif" {
let gifView = GIFImageView(image: image)
gifView.animate(withGIFData: data)
imageView = gifView
} else {
imageView = UIImageView(image: image)
}
imageView.contentMode = .scaleAspectFit
imageView.backgroundColor = .black
view = imageView
preferredContentSize = image.size
} else {
view = UIActivityIndicatorView(style: .large)
}
}
}
extension AttachmentPreviewViewController: TuskerNavigationDelegate {
var apiController: MastodonController {
fatalError("AttachmentPreviewViewController doesn't have a MastodonController")
}
}
extension AttachmentPreviewViewController: CustomPreviewPresenting {
func presentFromPreview(presenter: UIViewController) {
presenter.present(createGallery(), animated: true)
}
}