mirror of
https://github.com/zhigang1992/GitHawk.git
synced 2026-06-04 19:43:31 +08:00
81 lines
2.1 KiB
Swift
81 lines
2.1 KiB
Swift
//
|
|
// IssueFileContentViewController.swift
|
|
// Freetime
|
|
//
|
|
// Created by Ryan Nystrom on 8/12/17.
|
|
// Copyright © 2017 Ryan Nystrom. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
final class IssueFileContentViewController: UIViewController {
|
|
|
|
private let fullPath: String
|
|
private let client: GithubClient
|
|
private let scrollView = UIScrollView()
|
|
private let attributeView = AttributedStringView()
|
|
private let feedRefresh = FeedRefresh()
|
|
private var result: Result<(NSAttributedStringSizing, Content)>? = nil
|
|
|
|
init(fullPath: String, client: GithubClient) {
|
|
self.fullPath = fullPath
|
|
self.client = client
|
|
super.init(nibName: nil, bundle: nil)
|
|
|
|
scrollView.refreshControl = feedRefresh.refreshControl
|
|
feedRefresh.refreshControl.addTarget(self, action: #selector(IssueFileContentViewController.onRefresh), for: .valueChanged)
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
view.backgroundColor = .white
|
|
|
|
scrollView.isDirectionalLockEnabled = true
|
|
view.addSubview(scrollView)
|
|
|
|
scrollView.addSubview(attributeView)
|
|
|
|
feedRefresh.beginRefreshing()
|
|
fetch()
|
|
}
|
|
|
|
override func viewWillLayoutSubviews() {
|
|
super.viewWillLayoutSubviews()
|
|
scrollView.frame = view.bounds
|
|
}
|
|
|
|
// MARK: Private API
|
|
|
|
@objc
|
|
func onRefresh() {
|
|
fetch()
|
|
}
|
|
|
|
func fetch() {
|
|
client.fetchContents(contentsURLString: fullPath) { [weak self] (result) in
|
|
self?.handle(result: result)
|
|
}
|
|
}
|
|
|
|
func handle(result: Result<(NSAttributedStringSizing, Content)>) {
|
|
feedRefresh.endRefreshing()
|
|
|
|
self.result = result
|
|
switch result {
|
|
case .success(let text, let content):
|
|
title = content.name
|
|
|
|
let width: CGFloat = 0
|
|
scrollView.contentSize = text.textViewSize(width)
|
|
attributeView.configureAndSizeToFit(text: text, width: width)
|
|
case .error: break
|
|
}
|
|
}
|
|
|
|
}
|