source-aware playback statuses.

This commit is contained in:
Dmitry Sergeev
2026-09-01 21:22:30 +03:00
parent d3ea99233d
commit cd0298b136
10 changed files with 151 additions and 41 deletions
+23 -7
View File
@@ -18,6 +18,7 @@ func IsSessionPlaying(
statuses.Video,
statuses.HasVideo,
session.Generation,
session.Plan.Video,
) {
return false
}
@@ -25,17 +26,17 @@ func IsSessionPlaying(
statuses.Audio,
statuses.HasAudio,
session.Generation,
session.Plan.Audio,
) {
return false
}
return true
case TopologySynchronized:
return statusIsPlaying(
statuses.Sync,
statuses.HasSync,
session.Generation,
)
return statuses.HasSync &&
statuses.Sync.Generation == session.Generation &&
statuses.Sync.State == StatePlaying &&
sameSyncSource(statuses.Sync.Pair, session.Plan.Sync)
case TopologyIdle:
return false
@@ -45,8 +46,23 @@ func IsSessionPlaying(
}
}
func statusIsPlaying(status Status, present bool, generation uint64) bool {
func statusIsPlaying(
status Status,
present bool,
generation uint64,
feed FeedConfig,
) bool {
return present &&
status.Generation == generation &&
status.State == StatePlaying
status.State == StatePlaying &&
sameFeedSource(status.Feed, feed)
}
func sameFeedSource(a, b FeedConfig) bool {
return a.Domain == b.Domain && a.UUID == b.UUID
}
func sameSyncSource(a, b SyncPairConfig) bool {
return sameFeedSource(a.Video, b.Video) &&
sameFeedSource(a.Audio, b.Audio)
}