diff --git a/Berry Leaderboards.xcodeproj/project.pbxproj b/Berry Leaderboards.xcodeproj/project.pbxproj index bcc6ec0..570d977 100644 --- a/Berry Leaderboards.xcodeproj/project.pbxproj +++ b/Berry Leaderboards.xcodeproj/project.pbxproj @@ -393,7 +393,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 13.5; - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = "xyz.lncvrt.Berry-Leaderboards"; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; @@ -432,7 +432,7 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 13.5; - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = "xyz.lncvrt.Berry-Leaderboards"; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; diff --git a/Berry Leaderboards/ContentView.swift b/Berry Leaderboards/ContentView.swift index 21414c4..1782447 100644 --- a/Berry Leaderboards/ContentView.swift +++ b/Berry Leaderboards/ContentView.swift @@ -40,7 +40,7 @@ struct ContentView: View { .padding() } - List(players) { player in + List(players, id: \.username) { player in HStack { Text(player.username) Spacer() diff --git a/Berry Leaderboards/Player.swift b/Berry Leaderboards/Player.swift index 7e3af54..b62ea9d 100644 --- a/Berry Leaderboards/Player.swift +++ b/Berry Leaderboards/Player.swift @@ -7,19 +7,12 @@ import Foundation -struct Player: Identifiable { - let id = UUID() +struct Player: Codable { let username: String let score: Int } func parseLeaderboard(_ raw: String) -> [Player] { - raw.split(separator: ";").compactMap { entry in - let parts = entry.split(separator: ":") - guard parts.count == 2, - let nameData = Data(base64Encoded: String(parts[0])), - let username = String(data: nameData, encoding: .utf8), - let score = Int(parts[1]) else { return nil } - return Player(username: username, score: score) - } + guard let data = raw.data(using: .utf8) else { return [] } + return (try? JSONDecoder().decode([Player].self, from: data)) ?? [] }