Skip to content

Commit cd9b8b4

Browse files
committed
Fix track counter
1 parent 1bed4d7 commit cd9b8b4

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

packages/common/src/store/player/selectors.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export const getBuffering = (state: CommonState) => state.player.buffering
1818
export const getSeek = (state: CommonState) => state.player.seek
1919
export const getSeekCounter = (state: CommonState) => state.player.seekCounter
2020
export const getPlaybackRate = (state: CommonState) => state.player.playbackRate
21+
export const getPlayerBehavior = (state: CommonState) =>
22+
state.player.playerBehavior
2123

2224
export const getCurrentTrack = (state: CommonState) =>
2325
getTrack(state, { id: getTrackId(state) })

packages/common/src/store/player/slice.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ export type PlayerState = {
3636

3737
// Counter to track seek calls for times where we seek to the same position multiple times
3838
seekCounter: number
39+
40+
playerBehavior?: PlayerBehavior
3941
}
4042

4143
export const initialState: PlayerState = {
@@ -121,7 +123,9 @@ const slice = createSlice({
121123
name: 'player',
122124
initialState,
123125
reducers: {
124-
play: (_state, _action: PayloadAction<PlayPayload>) => {},
126+
play: (state, action: PayloadAction<PlayPayload>) => {
127+
state.playerBehavior = action.payload?.playerBehavior
128+
},
125129
playSucceeded: (state, action: PayloadAction<PlaySucceededPayload>) => {
126130
const { uid, trackId } = action.payload
127131
state.playing = true

packages/web/src/common/store/queue/sagas.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import { getLocation } from 'store/routing/selectors'
3838
const {
3939
getCollectible,
4040
getId: getQueueTrackId,
41-
getPlayerBehavior,
4241
getIndex,
4342
getLength,
4443
getOvershot,
@@ -50,7 +49,11 @@ const {
5049
getCurrentArtist
5150
} = queueSelectors
5251

53-
const { getTrackId: getPlayerTrackId, getUid: getPlayerUid } = playerSelectors
52+
const {
53+
getTrackId: getPlayerTrackId,
54+
getUid: getPlayerUid,
55+
getPlayerBehavior
56+
} = playerSelectors
5457

5558
const { add, clear, next, pause, play, queueAutoplay, previous, remove } =
5659
queueActions
@@ -158,6 +161,7 @@ export function* watchPlay() {
158161
// Play a specific uid
159162
const playerUid = yield* select(getPlayerUid)
160163
const playerTrackId = yield* select(getPlayerTrackId)
164+
const playerPlayerBehavior = yield* select(getPlayerBehavior)
161165

162166
if (uid || trackId) {
163167
const playActionTrack = yield* select(
@@ -200,7 +204,15 @@ export function* watchPlay() {
200204
const trackIsDifferent = playerTrackId !== playActionTrack.track_id
201205
const trackIsSameButDifferentUid =
202206
playerTrackId === playActionTrack.track_id && uid !== playerUid
203-
if (noTrackPlaying || trackIsDifferent || trackIsSameButDifferentUid) {
207+
const trackIsSameButDifferentPlayerBehavior =
208+
playerTrackId === playActionTrack.track_id &&
209+
playerPlayerBehavior !== playerBehavior
210+
if (
211+
noTrackPlaying ||
212+
trackIsDifferent ||
213+
trackIsSameButDifferentUid ||
214+
trackIsSameButDifferentPlayerBehavior
215+
) {
204216
yield* put(
205217
playerActions.play({
206218
uid,

0 commit comments

Comments
 (0)