Skip to content

Commit 9e8fe0a

Browse files
authored
Avoid using isActive as published var (#1215)
1 parent 42d6933 commit 9e8fe0a

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

Sources/Player/Player+ControlCenter.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ extension Player {
127127
}
128128

129129
func nowPlayingPublisher() -> AnyPublisher<NowPlaying, Never> {
130-
Publishers.CombineLatest($isActive, queuePublisher)
130+
Publishers.CombineLatest(isActivePublisher, queuePublisher)
131131
.map { [weak self] isActive, queue in
132132
guard let self, isActive, !queue.isActive else { return Just(NowPlaying.empty).eraseToAnyPublisher() }
133133
return Publishers.CombineLatest(

Sources/Player/Player.swift

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,19 @@ public final class Player: ObservableObject, Equatable {
5656
@Published var storedItems: Deque<PlayerItem>
5757
@Published var _playbackSpeed: PlaybackSpeed = .indefinite
5858

59-
@Published var isActive = false {
60-
didSet {
61-
if isActive {
59+
var isActive: Bool {
60+
get {
61+
isActivePublisher.value
62+
}
63+
set {
64+
if newValue {
6265
nowPlayingSession.becomeActiveIfPossible()
6366
queuePlayer.allowsExternalPlayback = configuration.allowsExternalPlayback
6467
}
6568
else {
6669
queuePlayer.allowsExternalPlayback = false
6770
}
71+
isActivePublisher.send(newValue)
6872
}
6973
}
7074

@@ -200,10 +204,13 @@ public final class Player: ObservableObject, Equatable {
200204
var commandRegistrations: [any RemoteCommandRegistrable] = []
201205

202206
// swiftlint:disable:next private_subject
203-
var desiredPlaybackSpeedPublisher = PassthroughSubject<Float, Never>()
207+
let isActivePublisher = CurrentValueSubject<Bool, Never>(false)
208+
209+
// swiftlint:disable:next private_subject
210+
let desiredPlaybackSpeedPublisher = PassthroughSubject<Float, Never>()
204211

205212
// swiftlint:disable:next private_subject
206-
var textStyleRulesPublisher = CurrentValueSubject<[AVTextStyleRule], Never>([])
213+
let textStyleRulesPublisher = CurrentValueSubject<[AVTextStyleRule], Never>([])
207214

208215
/// Creates a player with a given item queue.
209216
///
@@ -463,13 +470,12 @@ private extension Player {
463470
}
464471

465472
func configureControlCenterRemoteCommandUpdatePublisher() {
466-
Publishers.CombineLatest3(
473+
Publishers.CombineLatest(
467474
queuePublisher,
468-
propertiesPublisher,
469-
$isActive
475+
propertiesPublisher
470476
)
471477
.receiveOnMainThread()
472-
.sink { [weak self] queue, properties, _ in
478+
.sink { [weak self] queue, properties in
473479
guard let self else { return }
474480
let areSkipsEnabled = queue.elements.count <= 1 && properties.streamType != .live
475481
let hasError = queue.error != nil

0 commit comments

Comments
 (0)