← back to dev-ale__swiss-station

Function bodies 2 total

All specs Real LLM only Function bodies
LocationManager class · swift · L3-L47 (45 LOC)
SwissStation/LocationManager.swift
final class LocationManager: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()
    private var continuation: CheckedContinuation<CLLocation, Error>?

    override init() {
        super.init()
        manager.delegate = self
        manager.desiredAccuracy = kCLLocationAccuracyHundredMeters
    }

    var authorizationStatus: CLAuthorizationStatus {
        manager.authorizationStatus
    }

    func requestLocation() async throws -> CLLocation {
        let status = manager.authorizationStatus
        if status == .notDetermined {
            manager.requestWhenInUseAuthorization()
            // Wait briefly for the authorization dialog
            try await Task.sleep(nanoseconds: 1_000_000_000)
        }

        guard manager.authorizationStatus == .authorized ||
              manager.authorizationStatus == .authorizedAlways else {
            throw LocationError.denied
        }

        return try await withCheckedThrowingContinuation { continua
StationService class · swift · L5-L220 (216 LOC)
SwissStation/StationService.swift
final class StationService: ObservableObject {
    @Published var departures: [Departure] = []
    @Published var stationName: String = "Basel, Birmannsgasse"
    @Published var isLoading = false
    @Published var error: String?
    @Published var searchResults: [Station] = []
    @Published var locationStatus: String?
    @Published var showStationInMenuBar: Bool {
        didSet { UserDefaults.standard.set(showStationInMenuBar, forKey: "showStationInMenuBar") }
    }
    @Published var refreshInterval: TimeInterval {
        didSet {
            UserDefaults.standard.set(refreshInterval, forKey: "refreshInterval")
            startAutoRefresh()
        }
    }
    @Published var enabledTransports: Set<String> {
        didSet {
            UserDefaults.standard.set(Array(enabledTransports), forKey: "enabledTransports")
            Task { await fetchDepartures(force: true) }
        }
    }

    static let allTransports: [(id: String, label: String)] = [
        ("tram", "Tram"),