mirror of
https://github.com/zhigang1992/GitHawk.git
synced 2026-04-01 12:43:47 +08:00
* replace old markdown callsites * unit tests working * remove unused parsing * final removal of old parsing, build and tests succeed * remove dependency * capture readme ref branch
105 lines
3.4 KiB
Swift
105 lines
3.4 KiB
Swift
//
|
|
// RepositoryOverviewViewController.swift
|
|
// Freetime
|
|
//
|
|
// Created by Ryan Nystrom on 9/20/17.
|
|
// Copyright © 2017 Ryan Nystrom. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import IGListKit
|
|
import GitHubAPI
|
|
|
|
class RepositoryOverviewViewController: BaseListViewController<NSString>,
|
|
BaseListViewControllerDataSource {
|
|
|
|
private let repo: RepositoryDetails
|
|
private let client: RepositoryClient
|
|
private var readme: RepositoryReadmeModel?
|
|
|
|
init(client: GithubClient, repo: RepositoryDetails) {
|
|
self.repo = repo
|
|
self.client = RepositoryClient(githubClient: client, owner: repo.owner, name: repo.name)
|
|
super.init(
|
|
emptyErrorMessage: NSLocalizedString("Cannot load README.", comment: "")
|
|
)
|
|
self.dataSource = self
|
|
title = NSLocalizedString("Overview", comment: "")
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
makeBackBarItemEmpty()
|
|
}
|
|
|
|
// MARK: Overrides
|
|
|
|
override func fetch(page: NSString?) {
|
|
let repo = self.repo
|
|
let width = view.bounds.width
|
|
let contentSizeCategory = UIApplication.shared.preferredContentSizeCategory
|
|
|
|
client.githubClient.client
|
|
.send(V3RepositoryReadmeRequest(owner: repo.owner, repo: repo.name)) { [weak self] result in
|
|
switch result {
|
|
case .success(let response):
|
|
DispatchQueue.global().async {
|
|
let branch: String
|
|
if let items = URLComponents(url: response.data.url, resolvingAgainstBaseURL: false)?.queryItems,
|
|
let index = items.index(where: { $0.name == "ref" }),
|
|
let value = items[index].value {
|
|
branch = value
|
|
} else {
|
|
branch = "master"
|
|
}
|
|
|
|
let models = MarkdownModels(
|
|
response.data.content,
|
|
owner: repo.owner,
|
|
repo: repo.name,
|
|
width: width,
|
|
viewerCanUpdate: false,
|
|
contentSizeCategory: contentSizeCategory,
|
|
branch: branch
|
|
)
|
|
let model = RepositoryReadmeModel(models: models)
|
|
DispatchQueue.main.async { [weak self] in
|
|
self?.readme = model
|
|
self?.update(animated: trueUnlessReduceMotionEnabled)
|
|
}
|
|
}
|
|
case .failure:
|
|
self?.error(animated: trueUnlessReduceMotionEnabled)
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: BaseListViewControllerDataSource
|
|
|
|
func headModels(listAdapter: ListAdapter) -> [ListDiffable] {
|
|
return []
|
|
}
|
|
|
|
func models(listAdapter: ListAdapter) -> [ListDiffable] {
|
|
guard let readme = self.readme else { return [] }
|
|
return [readme]
|
|
}
|
|
|
|
func sectionController(model: Any, listAdapter: ListAdapter) -> ListSectionController {
|
|
return RepositoryReadmeSectionController()
|
|
}
|
|
|
|
func emptySectionController(listAdapter: ListAdapter) -> ListSectionController {
|
|
return RepositoryEmptyResultsSectionController(
|
|
topInset: 0,
|
|
layoutInsets: view.safeAreaInsets,
|
|
type: .readme
|
|
)
|
|
}
|
|
|
|
}
|