Skip to content

Commit 0f5154d

Browse files
committed
Fix: 루틴 완료 배열 수정
1 parent 2988cb9 commit 0f5154d

2 files changed

Lines changed: 47 additions & 49 deletions

File tree

Projects/Presentation/Sources/Home/View/HomeView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ final class HomeView: BaseViewController<HomeViewModel> {
554554
extension HomeView: RoutineViewDelegate {
555555
func routineView(_ sender: RoutineView, didTapMainRoutineCheckButton mainRoutine: MainRoutine) {
556556
showIndicatorView()
557-
viewModel.action(input: .updateRoutineCompletion(routines: [mainRoutine]))
557+
viewModel.action(input: .updateRoutineCompletion(updatedRoutine: mainRoutine))
558558
}
559559

560560
func routineView(_ sender: RoutineView, didTapMainRoutineMoreButton mainRoutine: MainRoutine) {
@@ -570,7 +570,7 @@ extension HomeView: RoutineViewDelegate {
570570

571571
func routineView(_ sender: RoutineView, didTapSubRoutineCheckButton subRoutine: SubRoutine) {
572572
showIndicatorView()
573-
viewModel.action(input: .updateRoutineCompletion(routines: [subRoutine]))
573+
viewModel.action(input: .updateRoutineCompletion(updatedRoutine: subRoutine))
574574
}
575575
}
576576

Projects/Presentation/Sources/Home/ViewModel/HomeViewModel.swift

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ final class HomeViewModel: ViewModel {
1818
case selectRoutine(routine: MainRoutine?)
1919
case deleteDailyRoutine
2020
case deleteAllRoutine
21-
case updateRoutineCompletion(routines: [Routine])
21+
case updateRoutineCompletion(updatedRoutine: Routine)
2222
case refreshSelectedDateRoutine
2323
case selectRoutineSortType(routineSortType: RoutineSortType?)
2424
}
@@ -95,8 +95,8 @@ final class HomeViewModel: ViewModel {
9595
case .deleteAllRoutine:
9696
deleteAllRoutine()
9797

98-
case .updateRoutineCompletion(let routines):
99-
updateRoutineCompletion(routines: routines)
98+
case .updateRoutineCompletion(let updatedRoutine):
99+
updateRoutineCompletion(updatedRoutine: updatedRoutine)
100100

101101
case .refreshSelectedDateRoutine:
102102
fetchRoutines(for: selectedDateSubject.value)
@@ -227,53 +227,51 @@ final class HomeViewModel: ViewModel {
227227
}
228228

229229
// 루틴의 완료 여부를 업데이트 합니다.
230-
private func updateRoutineCompletion(routines: [Routine]) {
230+
private func updateRoutineCompletion(updatedRoutine: Routine) {
231231
let performedDate = selectedDateSubject.value.convertToString(dateType: .yearMonthDate)
232232
var routineCompletionEntities: [RoutineCompletionEntity] = []
233233

234-
for routine in routines {
235-
let isDone = !routine.isDone
236-
let routineCompletionEntity = RoutineCompletionEntity(
237-
performedDate: performedDate,
238-
routineId: routine.id,
239-
completeYn: isDone,
240-
historySeq: routine.historySeq,
241-
routineType: routine.routineType)
242-
routineCompletionEntities.append(routineCompletionEntity)
243-
244-
// 메인 루틴이라면, 그 안의 세부 루틴 값도 업데이트
245-
if let mainRoutine = routine as? MainRoutine {
246-
for subRoutine in mainRoutine.subRoutines {
247-
guard subRoutine.isDone != isDone else { continue }
248-
let subRoutineCompletionEntity = RoutineCompletionEntity(
249-
performedDate: performedDate,
250-
routineId: subRoutine.id,
251-
completeYn: isDone,
252-
historySeq: subRoutine.historySeq,
253-
routineType: subRoutine.routineType)
254-
routineCompletionEntities.append(subRoutineCompletionEntity)
255-
}
256-
} else if let subRoutine = routine as? SubRoutine {
257-
// 세부 루틴이라면, 세부 루틴의 완료 값을 확인하여 메인 루틴도 업데이트
258-
let mainRoutines = routinesSubject.value
259-
for mainRoutine in mainRoutines {
260-
if mainRoutine.subRoutines.contains(subRoutine) {
261-
let mainRoutineIsDone = mainRoutine.isDone
262-
var subRoutineCompleted: Bool
263-
if subRoutine.isDone {
264-
subRoutineCompleted = mainRoutine.subRoutines.filter({ $0.isDone }).count - 1 == mainRoutine.subRoutines.count
265-
} else {
266-
subRoutineCompleted = mainRoutine.subRoutines.filter({ $0.isDone }).count + 1 == mainRoutine.subRoutines.count
267-
}
268-
if subRoutineCompleted != mainRoutineIsDone {
269-
let mainRoutineCompletionEntity = RoutineCompletionEntity(
270-
performedDate: performedDate,
271-
routineId: mainRoutine.id,
272-
completeYn: subRoutineCompleted,
273-
historySeq: mainRoutine.historySeq,
274-
routineType: mainRoutine.routineType)
275-
routineCompletionEntities.append(mainRoutineCompletionEntity)
276-
}
234+
let isDone = !updatedRoutine.isDone
235+
let routineCompletionEntity = RoutineCompletionEntity(
236+
performedDate: performedDate,
237+
routineId: updatedRoutine.id,
238+
completeYn: isDone,
239+
historySeq: updatedRoutine.historySeq,
240+
routineType: updatedRoutine.routineType)
241+
routineCompletionEntities.append(routineCompletionEntity)
242+
243+
// 메인 루틴이라면, 그 안의 세부 루틴 값도 업데이트
244+
if let mainRoutine = updatedRoutine as? MainRoutine {
245+
for subRoutine in mainRoutine.subRoutines {
246+
guard subRoutine.isDone != isDone else { continue }
247+
let subRoutineCompletionEntity = RoutineCompletionEntity(
248+
performedDate: performedDate,
249+
routineId: subRoutine.id,
250+
completeYn: isDone,
251+
historySeq: subRoutine.historySeq,
252+
routineType: subRoutine.routineType)
253+
routineCompletionEntities.append(subRoutineCompletionEntity)
254+
}
255+
} else if let subRoutine = updatedRoutine as? SubRoutine {
256+
// 세부 루틴이라면, 세부 루틴의 완료 값을 확인하여 메인 루틴도 업데이트
257+
let mainRoutines = routinesSubject.value
258+
for mainRoutine in mainRoutines {
259+
if mainRoutine.subRoutines.contains(subRoutine) {
260+
let mainRoutineIsDone = mainRoutine.isDone
261+
var subRoutineCompleted: Bool
262+
if subRoutine.isDone {
263+
subRoutineCompleted = mainRoutine.subRoutines.filter({ $0.isDone }).count - 1 == mainRoutine.subRoutines.count
264+
} else {
265+
subRoutineCompleted = mainRoutine.subRoutines.filter({ $0.isDone }).count + 1 == mainRoutine.subRoutines.count
266+
}
267+
if subRoutineCompleted != mainRoutineIsDone {
268+
let mainRoutineCompletionEntity = RoutineCompletionEntity(
269+
performedDate: performedDate,
270+
routineId: mainRoutine.id,
271+
completeYn: subRoutineCompleted,
272+
historySeq: mainRoutine.historySeq,
273+
routineType: mainRoutine.routineType)
274+
routineCompletionEntities.append(mainRoutineCompletionEntity)
277275
}
278276
}
279277
}

0 commit comments

Comments
 (0)