From ea239a711f9480be1ab252b90112eb9a3ddd8ef9 Mon Sep 17 00:00:00 2001 From: Jisoo Kim Date: Thu, 24 Jun 2021 10:19:49 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8New=20Issue=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=EC=9D=84=20=EC=9C=84=ED=95=9C=20IssueList=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84(#106)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IssueListViewController.swift | 17 +++++++++++++++-- .../IssueList/ViewModel/IssueViewModel.swift | 17 +++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) 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) + } + } + } + }