refactor: change domain model IDs from UUID to String canonical IDs
This refactor fixes the achievement system by using stable canonical string IDs (e.g., "stadium_mlb_fenway_park") instead of random UUIDs. This ensures stadium mappings for achievements are consistent across app launches and CloudKit sync operations. Changes: - Stadium, Team, Game: id property changed from UUID to String - Trip, TripStop, TripPreferences: updated to use String IDs for games/stadiums - CKModels: removed UUID parsing, use canonical IDs directly - AchievementEngine: now matches against canonical stadium IDs - All test files updated to use String IDs instead of UUID() Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -111,8 +111,8 @@ actor RemoteImageService {
|
||||
}
|
||||
|
||||
/// Fetch team logos by team ID
|
||||
func fetchTeamLogos(teams: [Team]) async -> [UUID: UIImage] {
|
||||
let urlToTeam: [URL: UUID] = Dictionary(
|
||||
func fetchTeamLogos(teams: [Team]) async -> [String: UIImage] {
|
||||
let urlToTeam: [URL: String] = Dictionary(
|
||||
uniqueKeysWithValues: teams.compactMap { team in
|
||||
guard let logoURL = team.logoURL else { return nil }
|
||||
return (logoURL, team.id)
|
||||
@@ -121,7 +121,7 @@ actor RemoteImageService {
|
||||
|
||||
let images = await fetchImages(from: Array(urlToTeam.keys))
|
||||
|
||||
var result: [UUID: UIImage] = [:]
|
||||
var result: [String: UIImage] = [:]
|
||||
for (url, image) in images {
|
||||
if let teamId = urlToTeam[url] {
|
||||
result[teamId] = image
|
||||
@@ -132,8 +132,8 @@ actor RemoteImageService {
|
||||
}
|
||||
|
||||
/// Fetch stadium photos by stadium ID
|
||||
func fetchStadiumPhotos(stadiums: [Stadium]) async -> [UUID: UIImage] {
|
||||
let urlToStadium: [URL: UUID] = Dictionary(
|
||||
func fetchStadiumPhotos(stadiums: [Stadium]) async -> [String: UIImage] {
|
||||
let urlToStadium: [URL: String] = Dictionary(
|
||||
uniqueKeysWithValues: stadiums.compactMap { stadium in
|
||||
guard let imageURL = stadium.imageURL else { return nil }
|
||||
return (imageURL, stadium.id)
|
||||
@@ -142,7 +142,7 @@ actor RemoteImageService {
|
||||
|
||||
let images = await fetchImages(from: Array(urlToStadium.keys))
|
||||
|
||||
var result: [UUID: UIImage] = [:]
|
||||
var result: [String: UIImage] = [:]
|
||||
for (url, image) in images {
|
||||
if let stadiumId = urlToStadium[url] {
|
||||
result[stadiumId] = image
|
||||
|
||||
Reference in New Issue
Block a user