fix: resolve compiler warnings across codebase

- PaywallView: remove unnecessary nil coalescing for currencyCode
- GameDAGRouter: change var to let for immutable compositeKeys
- GamesHistoryRow/View: add missing wnba and nwsl switch cases
- VisitDetailView: fix unused variable in preview
- AchievementEngine: use convenience init to avoid default parameter warning
- ProgressCardGenerator: use method overload instead of default parameter
- StadiumProximityMatcher: extract constants to ProximityConstants enum

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-13 13:16:40 -06:00
parent 22772fa57f
commit 04b62f147e
8 changed files with 33 additions and 15 deletions

View File

@@ -33,11 +33,16 @@ final class AchievementEngine {
// MARK: - Initialization
init(modelContext: ModelContext, dataProvider: AppDataProvider = AppDataProvider.shared) {
init(modelContext: ModelContext, dataProvider: AppDataProvider) {
self.modelContext = modelContext
self.dataProvider = dataProvider
}
/// Convenience initializer using the shared data provider
convenience init(modelContext: ModelContext) {
self.init(modelContext: modelContext, dataProvider: AppDataProvider.shared)
}
// MARK: - Public API
/// Full recalculation (call after visit deleted or on app update)

View File

@@ -212,18 +212,22 @@ struct PhotoMatchConfidence: Sendable {
}
}
// MARK: - Proximity Constants
/// Configuration constants for stadium proximity matching (outside @MainActor for default parameter use)
enum ProximityConstants: Sendable {
static let highConfidenceRadius: CLLocationDistance = 500 // 500m
static let mediumConfidenceRadius: CLLocationDistance = 2000 // 2km
static let searchRadius: CLLocationDistance = 5000 // 5km default
static let dateToleranceDays: Int = 1 // ±1 day for timezone/tailgating
}
// MARK: - Stadium Proximity Matcher
@MainActor
final class StadiumProximityMatcher {
static let shared = StadiumProximityMatcher()
// Configuration constants
static let highConfidenceRadius: CLLocationDistance = 500 // 500m
static let mediumConfidenceRadius: CLLocationDistance = 2000 // 2km
static let searchRadius: CLLocationDistance = 5000 // 5km default
static let dateToleranceDays: Int = 1 // ±1 day for timezone/tailgating
private let dataProvider = AppDataProvider.shared
private init() {}
@@ -233,7 +237,7 @@ final class StadiumProximityMatcher {
/// Find stadiums within radius of coordinates
func findNearbyStadiums(
coordinates: CLLocationCoordinate2D,
radius: CLLocationDistance = StadiumProximityMatcher.searchRadius,
radius: CLLocationDistance = ProximityConstants.searchRadius,
sport: Sport? = nil
) -> [StadiumMatch] {
let photoLocation = CLLocation(latitude: coordinates.latitude, longitude: coordinates.longitude)
@@ -275,7 +279,7 @@ final class StadiumProximityMatcher {
/// Check if coordinates are near any stadium
func isNearStadium(
coordinates: CLLocationCoordinate2D,
radius: CLLocationDistance = StadiumProximityMatcher.searchRadius
radius: CLLocationDistance = ProximityConstants.searchRadius
) -> Bool {
let matches = findNearbyStadiums(coordinates: coordinates, radius: radius)
return !matches.isEmpty