Skip to content

Commit 7ee0bb2

Browse files
ujhong7seungyooooong
authored andcommitted
refactor #161: PreCertificationViewDatas enum으로 변경
# Conflicts: # dogether/Presentation/Features/Main/MainViewController.swift
1 parent d86e000 commit 7ee0bb2

File tree

5 files changed

+20
-50
lines changed

5 files changed

+20
-50
lines changed

dogether/Domain/Entity/ViewDatas/PreCertificationViewDatas.swift

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,8 @@
77

88
import Foundation
99

10-
struct PreCertificationViewDatas: BaseEntity {
11-
let title: String
12-
let date: String?
13-
let groupId: Int?
14-
let memberId: Int?
15-
let todoId: Int?
16-
let sortOption: SortOptions?
17-
let filter: FilterTypes?
18-
19-
init(
20-
title: String = "",
21-
date: String? = nil,
22-
groupId: Int? = nil,
23-
memberId: Int? = nil,
24-
todoId: Int? = nil,
25-
sortOption: SortOptions? = nil,
26-
filter: FilterTypes? = nil
27-
) {
28-
self.title = title
29-
self.date = date
30-
self.groupId = groupId
31-
self.memberId = memberId
32-
self.todoId = todoId
33-
self.sortOption = sortOption
34-
self.filter = filter
35-
}
10+
enum PreCertificationViewDatas: BaseEntity {
11+
case main(title: String, date: String, groupId: Int, todoId: Int, filter: FilterTypes)
12+
case ranking(title: String, groupId: Int, memberId: Int)
13+
case certificationList(title: String, todoId: Int, sortOption: SortOptions, filter: FilterTypes)
3614
}

dogether/Presentation/Features/Certification/CertificationViewModel.swift

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ final class CertificationViewModel {
1212
private let todosUseCase: TodosUseCase
1313
private let userUseCase: UserUseCase
1414

15-
private(set) var preCertificationViewDatas = BehaviorRelay<PreCertificationViewDatas>(
16-
value: PreCertificationViewDatas()
17-
)
15+
private(set) var preCertificationViewDatas = BehaviorRelay<PreCertificationViewDatas?>(value: nil)
1816
private(set) var certificationViewDatas = BehaviorRelay<CertificationViewDatas>(value: CertificationViewDatas())
1917

2018
init() {
@@ -30,36 +28,30 @@ final class CertificationViewModel {
3028

3129
extension CertificationViewModel {
3230
func loadCertificationView() async throws {
33-
let datas = preCertificationViewDatas.value
34-
// MARK: from Main
35-
if let date = datas.date, let groupId = datas.groupId, let todoId = datas.todoId, let filter = datas.filter {
31+
guard let datas = preCertificationViewDatas.value else { return }
32+
33+
switch datas {
34+
case .main(let title, let date, let groupId, let todoId, let filter):
3635
let todos = try await getMyTodos(groupId: groupId, date: date, filter: filter)
37-
3836
certificationViewDatas.update {
39-
$0.title = datas.title
37+
$0.title = title
4038
$0.index = todos.firstIndex { $0.id == todoId } ?? 0
4139
$0.todos = todos
4240
}
43-
}
44-
45-
// MARK: from Ranking
46-
if let groupId = datas.groupId, let memberId = datas.memberId {
41+
42+
case .ranking(let title, let groupId, let memberId):
4743
let (index, isMine, todos) = try await getMemberTodos(groupId: groupId, memberId: memberId)
48-
4944
certificationViewDatas.update {
50-
$0.title = datas.title
45+
$0.title = title
5146
$0.isMine = isMine
5247
$0.index = index
5348
$0.todos = todos
5449
}
55-
}
56-
57-
// MARK: from CertificationList
58-
if let todoId = datas.todoId, let sortOption = datas.sortOption, let filter = datas.filter {
50+
51+
case .certificationList(let title, let todoId, let sortOption, let filter):
5952
let todos = try await getMyCertifications(todoId: todoId, sortOption: sortOption, filter: filter)
60-
6153
certificationViewDatas.update {
62-
$0.title = datas.title
54+
$0.title = title
6355
$0.index = todos.firstIndex { $0.id == todoId } ?? 0
6456
$0.todos = todos
6557
}
@@ -96,7 +88,7 @@ extension CertificationViewModel {
9688
func readTodo(index: Int? = nil) async throws {
9789
let index = index ?? certificationViewDatas.value.index
9890
guard let todo = certificationViewDatas.value.todos[safe: index],
99-
let _ = preCertificationViewDatas.value.memberId else { return }
91+
case .ranking = preCertificationViewDatas.value else { return }
10092
try await challengeGroupsUseCase.readTodo(todo: todo)
10193
}
10294

dogether/Presentation/Features/CertificationList/CertificationListViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ extension CertificationListViewController: CertificationListPageDelegate {
7272

7373
func selectCertificationAction(title: String, todo: TodoEntity) {
7474
let certificationViewController = CertificationViewController()
75-
let preCertificationViewDatas = PreCertificationViewDatas(
75+
let preCertificationViewDatas = PreCertificationViewDatas.certificationList(
7676
title: title,
7777
todoId: todo.id,
7878
sortOption: viewModel.sortViewDatas.value.options[viewModel.sortViewDatas.value.index],

dogether/Presentation/Features/Main/MainViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ extension MainViewController: MainDelegate {
240240
let date = DateFormatterManager.formattedDate(
241241
viewModel.sheetViewDatas.value.dateOffset
242242
).translateDateFormatForServer()
243-
let preCertificationViewDatas = PreCertificationViewDatas(
243+
let preCertificationViewDatas = PreCertificationViewDatas.main(
244244
title: "내 인증 정보",
245245
date: date,
246246
groupId: viewModel.currentGroup.id,

dogether/Presentation/Features/Ranking/RankingViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protocol RankingDelegate {
5252
extension RankingViewController: RankingDelegate {
5353
func goCertificationViewAction(rankingEntity: RankingEntity) {
5454
let certificationViewController = CertificationViewController()
55-
let preCertificationViewDatas = PreCertificationViewDatas(
55+
let preCertificationViewDatas = PreCertificationViewDatas.ranking(
5656
title: "\(rankingEntity.name)님의 인증 정보",
5757
groupId: viewModel.rankingViewDatas.value.groupId,
5858
memberId: rankingEntity.memberId

0 commit comments

Comments
 (0)