Skip to content

Commit ecd4997

Browse files
committed
fix: 기존에 완료된 후 해제하고 새로 완료했을 경우 기존의 완료 시간으로 업데이트 되는 현상 해결
1 parent 7683598 commit ecd4997

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

DevLog/Presentation/ViewModel/TodoEditorViewModel.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import OrderedCollections
1212
final class TodoEditorViewModel: Store {
1313
private struct Draft: Equatable {
1414
let isCompleted: Bool
15+
let completedAt: Date?
1516
let isPinned: Bool
1617
let title: String
1718
let content: String
@@ -21,6 +22,7 @@ final class TodoEditorViewModel: Store {
2122

2223
init(todo: Todo) {
2324
self.isCompleted = todo.isCompleted
25+
self.completedAt = todo.completedAt
2426
self.isPinned = todo.isPinned
2527
self.title = todo.title
2628
self.content = todo.content
@@ -31,6 +33,7 @@ final class TodoEditorViewModel: Store {
3133

3234
init(state: State) {
3335
self.isCompleted = state.isCompleted
36+
self.completedAt = state.completedAt
3437
self.isPinned = state.isPinned
3538
self.title = state.title
3639
self.content = state.content
@@ -42,6 +45,7 @@ final class TodoEditorViewModel: Store {
4245

4346
struct State: Equatable {
4447
var isCompleted: Bool = false
48+
var completedAt: Date?
4549
var isPinned: Bool = false
4650
var title: String = ""
4751
var content: String = ""
@@ -83,7 +87,6 @@ final class TodoEditorViewModel: Store {
8387
private let isCompleted: Bool
8488
private let isChecked: Bool
8589
private let createdAt: Date?
86-
private let completedAt: Date?
8790
private let originalDraft: Draft?
8891

8992
var navigationTitle: String {
@@ -109,7 +112,6 @@ final class TodoEditorViewModel: Store {
109112
self.isCompleted = false
110113
self.isChecked = false
111114
self.createdAt = nil
112-
self.completedAt = nil
113115
self.originalDraft = nil
114116
state.kind = kind
115117
}
@@ -120,9 +122,9 @@ final class TodoEditorViewModel: Store {
120122
self.isCompleted = todo.isCompleted
121123
self.isChecked = todo.isChecked
122124
self.createdAt = todo.createdAt
123-
self.completedAt = todo.completedAt
124125
self.originalDraft = Draft(todo: todo)
125126
state.isCompleted = todo.isCompleted
127+
state.completedAt = todo.completedAt
126128
state.isPinned = todo.isPinned
127129
state.title = todo.title
128130
state.content = todo.content
@@ -152,6 +154,9 @@ final class TodoEditorViewModel: Store {
152154
state.dueDate = nil
153155
}
154156
case .setCompleted(let isCompleted):
157+
if state.isCompleted != isCompleted {
158+
state.completedAt = isCompleted ? Date() : nil
159+
}
155160
state.isCompleted = isCompleted
156161
case .setKind(let todoKind):
157162
state.kind = todoKind
@@ -197,7 +202,7 @@ extension TodoEditorViewModel {
197202
content: state.content,
198203
createdAt: self.createdAt ?? date,
199204
updatedAt: date,
200-
completedAt: state.isCompleted ? (self.completedAt ?? date) : nil,
205+
completedAt: state.completedAt,
201206
dueDate: state.dueDate,
202207
tags: state.tags.map { $0 },
203208
kind: state.kind

0 commit comments

Comments
 (0)