Fix 8 audit items: remove force-unwraps, improve accessibility and concurrency
- Replace force-unwrap HK types with modern HKQuantityType(_:) initializer - Replace Calendar.date force-unwraps with guard/let in HealthService, HeaderPercView, MoodStreakActivity, DayViewViewModel, MonthTotalTemplate - Extract DayViewViewModel.countEntries into testable static method with safe flatMap - Replace DispatchQueue.main.asyncAfter with Task.sleep in CelebrationAnimations - Add .minimumScaleFactor(0.5) to SmallRollUpHeaderView for Dynamic Type - Add VoiceOver accessibility labels to HeaderPercView mood percentages - Fix @testable import iFeel → Feels in Tests_iOS.swift - Add 4 unit tests for countEntries (TDD) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,15 +20,12 @@ class DayViewViewModel: ObservableObject {
|
||||
}
|
||||
|
||||
private var numberOfEntries: Int {
|
||||
var num = 0
|
||||
grouped.keys.forEach({
|
||||
let year = grouped[$0]
|
||||
let monthKeys = year?.keys
|
||||
monthKeys?.forEach({
|
||||
num += year![$0]!.count
|
||||
})
|
||||
})
|
||||
return num
|
||||
Self.countEntries(in: grouped)
|
||||
}
|
||||
|
||||
/// Count total entries across all year/month groups. Extracted for testability.
|
||||
static func countEntries(in grouped: [Int: [Int: [MoodEntryModel]]]) -> Int {
|
||||
grouped.values.flatMap(\.values).reduce(0) { $0 + $1.count }
|
||||
}
|
||||
|
||||
init(addMonthStartWeekdayPadding: Bool) {
|
||||
@@ -90,8 +87,8 @@ class DayViewViewModel: ObservableObject {
|
||||
let forDate = entry.forDate
|
||||
|
||||
let components = Calendar.current.dateComponents([.day, .month, .year], from: forDate)
|
||||
let month = components.month!
|
||||
let year = components.year!
|
||||
let month = components.month ?? 1
|
||||
let year = components.year ?? Calendar.current.component(.year, from: Date())
|
||||
|
||||
let monthName = Random.monthName(fromMonthInt: month)
|
||||
let weekday = Random.weekdayName(fromDate: entry.forDate)
|
||||
|
||||
Reference in New Issue
Block a user