Skip to content

Commit 033e5fe

Browse files
committed
refactor: 동일 로직 메서드화
1 parent a20eea8 commit 033e5fe

1 file changed

Lines changed: 20 additions & 19 deletions

File tree

DevLog/Presentation/ViewModel/ProfileViewModel.swift

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,11 @@ final class ProfileViewModel: Store {
9494
}
9595

9696
var canMoveToPreviousQuarter: Bool {
97-
guard let selectedQuarterStart = state.selectedQuarterStart else { return false }
98-
guard let previousQuarterStart = calendar.date(byAdding: .month, value: -3, to: selectedQuarterStart) else {
99-
return false
100-
}
101-
let today = calendar.startOfDay(for: Date())
102-
return canMove(to: previousQuarterStart, calendar: calendar, today: today)
97+
canMoveToQuarter(offsetMonths: -3)
10398
}
10499

105100
var canMoveToNextQuarter: Bool {
106-
guard let selectedQuarterStart = state.selectedQuarterStart else { return false }
107-
guard let nextQuarterStart = calendar.date(byAdding: .month, value: 3, to: selectedQuarterStart) else {
108-
return false
109-
}
110-
let today = calendar.startOfDay(for: Date())
111-
return canMove(to: nextQuarterStart, calendar: calendar, today: today)
101+
canMoveToQuarter(offsetMonths: 3)
112102
}
113103

114104
init(
@@ -245,6 +235,15 @@ final class ProfileViewModel: Store {
245235
}
246236

247237
private extension ProfileViewModel {
238+
func setAlert(
239+
_ state: inout State,
240+
isPresented: Bool
241+
) {
242+
state.alertTitle = "오류"
243+
state.alertMessage = "문제가 발생했습니다. 잠시 후 다시 시도해주세요."
244+
state.showAlert = isPresented
245+
}
246+
248247
func fetchQuarterTodos(from quarterStart: Date) async throws -> [Todo] {
249248
guard let nextQuarterStart = calendar.date(byAdding: .month, value: 3, to: quarterStart) else {
250249
return []
@@ -355,12 +354,14 @@ private extension ProfileViewModel {
355354
return calendar.date(from: components) ?? startOfMonth(for: date, calendar: calendar)
356355
}
357356

358-
func setAlert(
359-
_ state: inout State,
360-
isPresented: Bool
361-
) {
362-
state.alertTitle = "오류"
363-
state.alertMessage = "문제가 발생했습니다. 잠시 후 다시 시도해주세요."
364-
state.showAlert = isPresented
357+
func canMoveToQuarter(offsetMonths: Int) -> Bool {
358+
guard let selectedQuarterStart = state.selectedQuarterStart else { return false }
359+
guard let targetQuarterStart = calendar.date(
360+
byAdding: .month, value: offsetMonths, to: selectedQuarterStart)
361+
else {
362+
return false
363+
}
364+
let today = calendar.startOfDay(for: Date())
365+
return canMove(to: targetQuarterStart, calendar: calendar, today: today)
365366
}
366367
}

0 commit comments

Comments
 (0)