// AttachmentViewController.swift // Tusker // // Created by Shadowfacts on 6/14/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import UIKit import Pachyderm class AttachmentViewController: UIViewController { let attachment: Attachment var largeImageVC: LargeImageViewController? var loadingVC: LoadingViewController? private var initialControlsVisible: Bool = true var controlsVisible: Bool { get { return largeImageVC?.controlsVisible ?? initialControlsVisible } set { if let largeImageVC = largeImageVC { largeImageVC.setControlsVisible(newValue, animated: false) } else { initialControlsVisible = newValue } } } override var childForHomeIndicatorAutoHidden: UIViewController? { return largeImageVC } init(attachment: Attachment) { self.attachment = attachment super.init(nibName: "AttachmentViewController", bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() if let data = ImageCache.attachments.get(attachment.url) { createLargeImage(data: data) } else { loadingVC = LoadingViewController() embedChild(loadingVC!) ImageCache.attachments.get(attachment.url) { [weak self] (data) in DispatchQueue.main.async { self?.loadingVC?.removeViewAndController() self?.createLargeImage(data: data!) } } } } func createLargeImage(data: Data) { guard let image = UIImage(data: data) else { return } largeImageVC = LargeImageViewController(image: image, description: attachment.description, sourceFrame: nil, sourceCornerRadius: nil) largeImageVC!.initialControlsVisible = initialControlsVisible largeImageVC!.shrinkGestureEnabled = false if attachment.url.pathExtension == "gif" { largeImageVC!.gifData = data } embedChild(largeImageVC!) } }