Skip to content

Commit 3ad4a71

Browse files
committed
feat: ProfileHeatmapBuilder로 수정
1 parent d2c0c11 commit 3ad4a71

3 files changed

Lines changed: 18 additions & 18 deletions

File tree

Application/DevLogPresentation/Sources/Profile/ProfileFeature+State.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,24 @@ extension ProfileFeature.State {
3636
}
3737

3838
var canMoveToPreviousQuarter: Bool {
39-
ProfileFeature.canMoveToQuarter(offsetMonths: -3, state: self)
39+
ProfileHeatmapBuilder.canMoveToQuarter(offsetMonths: -3, state: self)
4040
}
4141

4242
var canMoveToNextQuarter: Bool {
43-
ProfileFeature.canMoveToQuarter(offsetMonths: 3, state: self)
43+
ProfileHeatmapBuilder.canMoveToQuarter(offsetMonths: 3, state: self)
4444
}
4545

4646
var isViewingCurrentQuarter: Bool {
4747
guard let selectedQuarterStart,
48-
let currentQuarterStart = ProfileFeature.quarterStart(for: Date()) else {
48+
let currentQuarterStart = ProfileHeatmapBuilder.quarterStart(for: Date()) else {
4949
return false
5050
}
5151
return selectedQuarterStart == currentQuarterStart
5252
}
5353

5454
var availableQuarterYears: [Int] {
5555
guard let earliestQuarterStart,
56-
let currentQuarterStart = ProfileFeature.quarterStart(for: Date()) else {
56+
let currentQuarterStart = ProfileHeatmapBuilder.quarterStart(for: Date()) else {
5757
return [selectedQuarterPickerYear]
5858
}
5959
let earliestYear = Calendar.current.component(.year, from: earliestQuarterStart)
@@ -62,12 +62,12 @@ extension ProfileFeature.State {
6262
}
6363

6464
func quarterStartForPicker(quarter: Int) -> Date? {
65-
ProfileFeature.quarterStart(year: selectedQuarterPickerYear, quarter: quarter)
65+
ProfileHeatmapBuilder.quarterStart(year: selectedQuarterPickerYear, quarter: quarter)
6666
}
6767

6868
func isQuarterSelectableForPicker(_ quarter: Int) -> Bool {
6969
guard let quarterStart = quarterStartForPicker(quarter: quarter) else { return false }
70-
return ProfileFeature.canSelectQuarter(quarterStart, state: self)
70+
return ProfileHeatmapBuilder.canSelectQuarter(quarterStart, state: self)
7171
}
7272

7373
func isQuarterSelectedForPicker(_ quarter: Int) -> Bool {

Application/DevLogPresentation/Sources/Profile/ProfileFeature.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ struct ProfileFeature {
9595
return observeNetworkConnectivityEffect()
9696
case .fetchData, .refresh:
9797
if state.selectedQuarterStart == nil,
98-
let quarterStart = Self.quarterStart(for: Date()) {
98+
let quarterStart = ProfileHeatmapBuilder.quarterStart(for: Date()) {
9999
state.selectedQuarterStart = quarterStart
100100
}
101101
let rawValues = fetchHeatmapActivityTypesUseCase.execute()
102-
let settings = Self.normalizeActivityKinds(rawValues)
102+
let settings = ProfileHeatmapBuilder.normalizeActivityKinds(rawValues)
103103
if !settings.isEmpty {
104104
state.selectedActivityKinds = settings
105105
}
@@ -127,11 +127,11 @@ struct ProfileFeature {
127127
}
128128
state.showQuarterPicker = true
129129
case .selectQuarter(let quarterStart):
130-
guard Self.canSelectQuarter(quarterStart, state: state) else { break }
130+
guard ProfileHeatmapBuilder.canSelectQuarter(quarterStart, state: state) else { break }
131131
state.showQuarterPicker = false
132132
return updateSelectedQuarter(to: quarterStart, state: &state)
133133
case .moveToCurrentQuarter:
134-
guard let currentQuarterStart = Self.quarterStart(for: Date()),
134+
guard let currentQuarterStart = ProfileHeatmapBuilder.quarterStart(for: Date()),
135135
state.selectedQuarterStart != currentQuarterStart else { break }
136136
return updateSelectedQuarter(to: currentQuarterStart, state: &state)
137137
case .moveQuarter(let delta):
@@ -142,7 +142,7 @@ struct ProfileFeature {
142142
value: monthDelta,
143143
to: selectedQuarterStart
144144
) else { break }
145-
guard Self.canSelectQuarter(nextQuarterStart, state: state) else { break }
145+
guard ProfileHeatmapBuilder.canSelectQuarter(nextQuarterStart, state: state) else { break }
146146
return updateSelectedQuarter(to: nextQuarterStart, state: &state)
147147
case .toggleActivityKind(let activityKind):
148148
if state.selectedActivityKinds.contains(activityKind),
@@ -174,7 +174,7 @@ struct ProfileFeature {
174174
state.avatarImageData = nil
175175
}
176176
if state.earliestQuarterStart == nil {
177-
state.earliestQuarterStart = Self.quarterStart(for: profile.createdAt)
177+
state.earliestQuarterStart = ProfileHeatmapBuilder.quarterStart(for: profile.createdAt)
178178
?? Calendar.current.startOfDay(for: profile.createdAt)
179179
}
180180
if let avatarURL = profile.avatarURL {
@@ -232,7 +232,7 @@ private extension ProfileFeature {
232232
.run { [fetchTodosUseCase] send in
233233
await send(.loading(.begin(target: .default, mode: .delayed)))
234234
do {
235-
let data = try await Self.fetchQuarterActivityData(
235+
let data = try await ProfileHeatmapBuilder.fetchQuarterActivityData(
236236
from: quarterStart,
237237
fetchTodosUseCase: fetchTodosUseCase
238238
)

Application/DevLogPresentation/Sources/Profile/ProfileFeature+Heatmap.swift renamed to Application/DevLogPresentation/Sources/Profile/ProfileHeatmapBuilder.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// ProfileFeature+Heatmap.swift
2+
// ProfileHeatmapBuilder.swift
33
// DevLogPresentation
44
//
55
// Created by opfic on 6/15/26.
@@ -31,7 +31,7 @@ private struct ProfileHeatmapActivityEntry {
3131
var activityKinds: Set<ActivityKind>
3232
}
3333

34-
extension ProfileFeature {
34+
enum ProfileHeatmapBuilder {
3535
static func quarterStart(for date: Date) -> Date? {
3636
let month = Calendar.current.component(.month, from: date)
3737
let startMonth = ((month - 1) / 3) * 3 + 1
@@ -50,9 +50,9 @@ extension ProfileFeature {
5050
return Calendar.current.date(from: components)
5151
}
5252

53-
static func canSelectQuarter(_ quarterStart: Date, state: State) -> Bool {
53+
static func canSelectQuarter(_ quarterStart: Date, state: ProfileFeature.State) -> Bool {
5454
guard let earliestQuarterStart = state.earliestQuarterStart,
55-
let currentQuarterStart = self.quarterStart(for: Date()) else { return false }
55+
let currentQuarterStart = Self.quarterStart(for: Date()) else { return false }
5656
return earliestQuarterStart <= quarterStart && quarterStart <= currentQuarterStart
5757
}
5858

@@ -66,7 +66,7 @@ extension ProfileFeature {
6666
)
6767
}
6868

69-
static func canMoveToQuarter(offsetMonths: Int, state: State) -> Bool {
69+
static func canMoveToQuarter(offsetMonths: Int, state: ProfileFeature.State) -> Bool {
7070
guard let selectedQuarterStart = state.selectedQuarterStart else { return false }
7171
guard let targetQuarterStart = Calendar.current.date(
7272
byAdding: .month,

0 commit comments

Comments
 (0)