Skip to content

Commit

Permalink
feat: ✨New Issue 이동을 위한 IssueList 관련 로직 구현(Lia316#106)
Browse files Browse the repository at this point in the history
  • Loading branch information
ghis22130 committed Jun 24, 2021
1 parent da27a45 commit ea239a7
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Combine

struct IssueListViewControllerAction {
let showNewIssueView: () -> ()
let showIssueDetailView: (IssueDetail) -> Void
}

final class IssueListViewController: UIViewController, ViewControllerIdentifierable {
Expand Down Expand Up @@ -200,8 +201,14 @@ extension IssueListViewController {
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
fillCheckButton(tableView)
changeIssueNumLabel(tableView)
if tableView.isEditing {
fillCheckButton(tableView)
changeIssueNumLabel(tableView)
} else {
viewModel.selectIssue(at: indexPath.row) { [weak self] issueDetail in
self?.action?.showIssueDetailView(issueDetail)
}
}
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
Expand Down Expand Up @@ -246,3 +253,9 @@ extension IssueListViewController {
action?.showNewIssueView()
}
}

//MARK: - Move Issue Detail

extension IssueListViewController {

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ final class IssueViewModel {
@Published private(set) var error: String

private var fetchIssueListUseCase: FetchIssueListUseCase

init(_ fetchIssueListUseCase: FetchIssueListUseCase) {
private var fetchIssueDetailUseCase: FetchIssueDetailUseCase

init(_ fetchIssueListUseCase: FetchIssueListUseCase, _ fetchIssueDetailUseCase: FetchIssueDetailUseCase) {
self.fetchIssueListUseCase = fetchIssueListUseCase
self.fetchIssueDetailUseCase = fetchIssueDetailUseCase
self.issues = []
self.error = ""
loadIssues()
Expand Down Expand Up @@ -69,4 +71,15 @@ extension IssueViewModel {
issues.remove(at: index)
}

func selectIssue(at id: Int, completion: @escaping (IssueDetail) -> Void ) {
fetchIssueDetailUseCase.excute(id: id) { result in
switch result {
case .success(let issueDetail):
completion(issueDetail)
case .failure(let error):
self.handleError(error)
}
}
}

}

0 comments on commit ea239a7

Please sign in to comment.