Add local Live Activity and Dynamic Island track display

This commit is contained in:
2026-09-13 11:27:58 +03:00
parent 2ca6201ad6
commit ddd44e8edb
16 changed files with 600 additions and 27 deletions
+6
View File
@@ -14,6 +14,7 @@ final class PlayerStore: ObservableObject {
@Published var artworkError: String?
@Published var incomingInvitation: String?
let discovery = DiscoveryStore()
var liveActivity: LiveActivityManager?
private(set) var receivedAt = Date()
private var client: BridgeClient?
private var runner: Task<Void, Never>?
@@ -143,6 +144,7 @@ final class PlayerStore: ObservableObject {
client.close()
guard !Task.isCancelled, self.generation == current else { return }
self.connected = false
self.liveActivity?.unavailable()
self.state = nil
self.artworkTask?.cancel()
self.artwork = nil
@@ -167,6 +169,7 @@ final class PlayerStore: ObservableObject {
receivedAt = Date()
connected = true
status = "Подключено"
liveActivity?.receive(snapshot)
guard artworkID != snapshot.artworkId else { return }
artworkID = snapshot.artworkId
artworkTask?.cancel()
@@ -244,6 +247,7 @@ final class PlayerStore: ObservableObject {
func forget() {
do { try storage.delete() }
catch { self.error = error.localizedDescription; return }
liveActivity?.end()
stop()
cancelPairing()
needsPairing = false
@@ -253,6 +257,7 @@ final class PlayerStore: ObservableObject {
}
private func stop() {
liveActivity?.unavailable()
generation = UUID()
runner?.cancel()
runner = nil
@@ -268,6 +273,7 @@ final class PlayerStore: ObservableObject {
}
private func revokeAccess() {
liveActivity?.end()
stop()
needsPairing = true
status = "Нужно повторное сопряжение"