diff --git a/ios/IssueTracker/IssueTracker/IssueList/ViewController/IssueListViewController.swift b/ios/IssueTracker/IssueTracker/IssueList/ViewController/IssueListViewController.swift index f99603544..580cf293d 100644 --- a/ios/IssueTracker/IssueTracker/IssueList/ViewController/IssueListViewController.swift +++ b/ios/IssueTracker/IssueTracker/IssueList/ViewController/IssueListViewController.swift @@ -10,6 +10,7 @@ import Combine struct IssueListViewControllerAction { let showNewIssueView: () -> () + let showIssueDetailView: (IssueDetail) -> Void } final class IssueListViewController: UIViewController, ViewControllerIdentifierable { @@ -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) { @@ -246,3 +253,9 @@ extension IssueListViewController { action?.showNewIssueView() } } + +//MARK: - Move Issue Detail + +extension IssueListViewController { + +} diff --git a/ios/IssueTracker/IssueTracker/IssueList/ViewModel/IssueViewModel.swift b/ios/IssueTracker/IssueTracker/IssueList/ViewModel/IssueViewModel.swift index d59f8cc48..8ee89dec8 100644 --- a/ios/IssueTracker/IssueTracker/IssueList/ViewModel/IssueViewModel.swift +++ b/ios/IssueTracker/IssueTracker/IssueList/ViewModel/IssueViewModel.swift @@ -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() @@ -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) + } + } + } + }