- Add OAuth 2.0 PKCE authentication for Spotify Web API - Create SpotifyNowPlayingMonitor for polling current track - Add Settings tab with music source toggle (Apple Music/Spotify) - Store tokens securely in Keychain - Display current track on Glass as NOW_PLAYING card 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
45 lines
1.3 KiB
Swift
45 lines
1.3 KiB
Swift
//
|
|
// irisApp.swift
|
|
// iris
|
|
//
|
|
// Created by Kenneth on 06/01/2026.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
@main
|
|
struct irisApp: App {
|
|
@Environment(\.scenePhase) private var scenePhase
|
|
@StateObject private var ble: BlePeripheralManager
|
|
@StateObject private var orchestrator: ContextOrchestrator
|
|
@StateObject private var spotifyAuth: SpotifyAuthManager
|
|
|
|
init() {
|
|
let bleManager = BlePeripheralManager()
|
|
bleManager.start()
|
|
let spotify = SpotifyAuthManager()
|
|
_ble = StateObject(wrappedValue: bleManager)
|
|
_spotifyAuth = StateObject(wrappedValue: spotify)
|
|
_orchestrator = StateObject(wrappedValue: ContextOrchestrator(ble: bleManager, spotifyAuth: spotify))
|
|
}
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
ContentView()
|
|
.environmentObject(ble)
|
|
.environmentObject(orchestrator)
|
|
.environmentObject(spotifyAuth)
|
|
.onOpenURL { url in
|
|
if url.scheme == "iris-spotify-auth" {
|
|
spotifyAuth.handleCallback(url: url)
|
|
}
|
|
}
|
|
.onChange(of: scenePhase) { phase in
|
|
if phase == .active || phase == .background {
|
|
ble.start()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|