Initial commit

This commit is contained in:
Lncvrt committed 2025-06-12 14:05:17 -07:00
1 parent d8329bf6ed
commit d22da0f21a
10 files changed
+150 -117

No files matched your search

@@ -6,5 +6,7 @@
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
+33 -8
View File
@@ -8,17 +8,42 @@
import SwiftUI
struct ContentView: View {
@State private var players: [Player] = []
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
ZStack {
VisualEffectBlur()
.ignoresSafeArea()
List(players) { player in
HStack {
Text(player.username)
Spacer()
Text("\(player.score)")
.bold()
}
.padding(.vertical, 4)
.listRowBackground(Color.clear)
}
.background(Color.clear)
.scrollContentBackground(.hidden)
.task {
await loadPlayers()
}
}
}
func loadPlayers() async {
do {
players = try await loadLeaderboard()
} catch {
print("Failed to load leaderboard:", error)
}
.padding()
}
}
#Preview {
ContentView()
func loadLeaderboard() async throws -> [Player] {
let url = URL(string: "https://berrydash.lncvrt.xyz/database/getTopPlayersAPI.php")!
let (data, _) = try await URLSession.shared.data(from: url)
guard let raw = String(data: data, encoding: .utf8) else { return [] }
return parseLeaderboard(raw)
}
+25
View File
@@ -0,0 +1,25 @@
//
// Player.swift
// BerryLeaderboards
//
// Created by Lncvrt on 6/9/25.
//
import Foundation
struct Player: Identifiable {
let id = UUID()
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)
}
}
+19
View File
@@ -0,0 +1,19 @@
//
// VisualEffectBlur.swift
// BerryLeaderboards
//
// Created by Lncvrt on 6/9/25.
//
import SwiftUI
struct VisualEffectBlur: NSViewRepresentable {
func makeNSView(context: Context) -> NSVisualEffectView {
let view = NSVisualEffectView()
view.blendingMode = .behindWindow
view.material = .underWindowBackground
view.state = .active
return view
}
func updateNSView(_ nsView: NSVisualEffectView, context: Context) {}
}