source-aware playback statuses.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user