diff --git a/Classes/Repository/RepositoryCodeBlobViewController.swift b/Classes/Repository/RepositoryCodeBlobViewController.swift index 71e582a0a..f1bf2a393 100644 --- a/Classes/Repository/RepositoryCodeBlobViewController.swift +++ b/Classes/Repository/RepositoryCodeBlobViewController.swift @@ -149,7 +149,6 @@ final class RepositoryCodeBlobViewController: UIViewController, EmptyViewDelegat branch: branch, path: path.path ) { [weak self] (result) in - self?.feedRefresh.endRefreshing() switch result { case .success(let text): self?.handle(text: text) @@ -162,17 +161,20 @@ final class RepositoryCodeBlobViewController: UIViewController, EmptyViewDelegat } } - func error(cannotLoad: Bool) { + private func error(cannotLoad: Bool) { + feedRefresh.endRefreshing() emptyView.isHidden = false emptyView.label.text = cannotLoad ? NSLocalizedString("Cannot display file as text", comment: "") : NSLocalizedString("Error loading file", comment: "") } - func handle(text: String) { + private func handle(text: String) { emptyView.isHidden = true didFetchPayload(text) - codeView.set(code: text) + codeView.set(code: text) { [weak self] in + self?.feedRefresh.endRefreshing() + } } // MARK: EmptyViewDelegate diff --git a/Classes/Views/CodeView.swift b/Classes/Views/CodeView.swift index c8b9cab79..6a9fe18e8 100644 --- a/Classes/Views/CodeView.swift +++ b/Classes/Views/CodeView.swift @@ -31,7 +31,7 @@ final class CodeView: UITextView { } // MARK: Public API - func set(code: String, language: String? = nil) { + func set(code: String, language: String? = nil, completion: @escaping () -> Void) { DispatchQueue.global().async { let maybeHighlighted: NSAttributedString? if let language = language { @@ -40,9 +40,13 @@ final class CodeView: UITextView { // Automatic language detection maybeHighlighted = GithubHighlighting.highlight(code) } - guard let highlighted = maybeHighlighted else { return } + guard let highlighted = maybeHighlighted else { + DispatchQueue.main.async(execute: completion) + return + } DispatchQueue.main.async { [weak self] in self?.set(attributedCode: highlighted) + completion() } } }