Files
GitHawk/Classes/Issues/Preview/IssuePreviewViewController.swift

80 lines
2.2 KiB
Swift

//
// IssuePreviewSectionController.swift
// Freetime
//
// Created by Ryan Nystrom on 8/1/17.
// Copyright © 2017 Ryan Nystrom. All rights reserved.
//
import UIKit
import IGListKit
import SnapKit
final class IssuePreviewViewController: UIViewController, ListAdapterDataSource {
private let collectionView = UICollectionView(frame: .zero, collectionViewLayout: ListCollectionViewLayout.basic())
private let adapter = ListAdapter(updater: ListAdapterUpdater(), viewController: nil)
private let markdown: String
private let owner: String
private let repo: String
private var model: IssuePreviewModel?
init(
markdown: String,
owner: String,
repo: String
) {
self.markdown = markdown
self.owner = owner
self.repo = repo
super.init(nibName: nil, bundle: nil)
title = NSLocalizedString("Preview", comment: "")
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
let viewModels = MarkdownModels(
markdown,
owner: owner,
repo: repo,
width: view.bounds.width,
viewerCanUpdate: false,
contentSizeCategory: UIContentSizeCategory.preferred,
isRoot: false
)
model = IssuePreviewModel(models: viewModels)
view.addSubview(collectionView)
collectionView.backgroundColor = .white
collectionView.alwaysBounceVertical = true
collectionView.contentInset = Styles.Sizes.listInsetLarge
collectionView.snp.makeConstraints { make in
make.edges.equalTo(view)
}
adapter.collectionView = collectionView
adapter.dataSource = self
}
// MARK: ListAdapterDataSource
func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
guard let model = self.model else { return [] }
return [model]
}
func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController {
return IssuePreviewSectionController()
}
func emptyView(for listAdapter: ListAdapter) -> UIView? {
return nil
}
}