@@ -53,6 +53,7 @@ final class ProfileViewModel: Store {
5353 private let upsertStatusMessageUseCase : UpsertStatusMessageUseCase
5454 private let fetchHeatmapActivityTypesUseCase : FetchProfileHeatmapActivityTypesUseCase
5555 private let updateHeatmapActivityTypesUseCase : UpdateProfileHeatmapActivityTypesUseCase
56+ private let calendar = Calendar . current
5657
5758 var resetButtonEnabled : Bool {
5859 !state. statusMessage. isEmpty && state. showDoneButton
@@ -67,7 +68,6 @@ final class ProfileViewModel: Store {
6768 guard let selectedDay = state. selectedDay,
6869 let selectedQuarterStart = state. selectedQuarterStart,
6970 let todos = state. quarterTodosCache [ selectedQuarterStart] else { return [ ] }
70- let calendar = Calendar . current
7171 let dayStart = calendar. startOfDay ( for: selectedDay. date)
7272
7373 return todos. compactMap { todo in
@@ -87,7 +87,6 @@ final class ProfileViewModel: Store {
8787
8888 var canMoveToPreviousQuarter : Bool {
8989 guard let selectedQuarterStart = state. selectedQuarterStart else { return false }
90- let calendar = Calendar . current
9190 guard let previousQuarterStart = calendar. date ( byAdding: . month, value: - 3 , to: selectedQuarterStart) else {
9291 return false
9392 }
@@ -97,7 +96,6 @@ final class ProfileViewModel: Store {
9796
9897 var canMoveToNextQuarter : Bool {
9998 guard let selectedQuarterStart = state. selectedQuarterStart else { return false }
100- let calendar = Calendar . current
10199 guard let nextQuarterStart = calendar. date ( byAdding: . month, value: 3 , to: selectedQuarterStart) else {
102100 return false
103101 }
@@ -125,7 +123,6 @@ final class ProfileViewModel: Store {
125123 var effects : [ SideEffect ] = [ ]
126124 switch action {
127125 case . onAppear:
128- let calendar = Calendar . current
129126 if state. selectedQuarterStart == nil {
130127 state. selectedQuarterStart = quarterStart ( for: Date ( ) , calendar: calendar)
131128 }
@@ -161,7 +158,6 @@ final class ProfileViewModel: Store {
161158 state. selectedActivityForSheet = activity
162159 case . moveQuarter( let delta) :
163160 guard let selectedQuarterStart = state. selectedQuarterStart else { break }
164- let calendar = Calendar . current
165161 let monthDelta = 3 * delta
166162 guard let nextQuarterStart = calendar. date (
167163 byAdding: . month,
@@ -242,7 +238,6 @@ final class ProfileViewModel: Store {
242238
243239private extension ProfileViewModel {
244240 func fetchQuarterTodos( from quarterStart: Date ) async throws -> [ Todo ] {
245- let calendar = Calendar . current
246241 guard let nextQuarterStart = calendar. date ( byAdding: . month, value: 3 , to: quarterStart) else {
247242 return [ ]
248243 }
@@ -266,7 +261,6 @@ private extension ProfileViewModel {
266261 }
267262
268263 func makeCompletionMonths( from todos: [ Todo ] , quarterStart: Date ) -> [ ProfileCompletionMonth ] {
269- let calendar = Calendar . current
270264 var dailyCreatedCount : [ Date : Int ] = [ : ]
271265 var dailyCompletedCount : [ Date : Int ] = [ : ]
272266
0 commit comments