Procházet zdrojové kódy

fix: don't issue queue actions if there is no master

Fela Maslen před 5 roky
rodič
revize
006e50855b

+ 8 - 4
gmus-web/src/effects/effects.spec.ts

@@ -255,7 +255,7 @@ describe(globalEffects.name, () => {
       const result = globalEffects(
         {
           ...initialState,
-          player: { ...initialState.player, queue: [23] },
+          player: { ...initialState.player, master: 'some-master', queue: [23] },
         },
         action,
       );
@@ -263,6 +263,7 @@ describe(globalEffects.name, () => {
         type: ActionTypeRemote.StateSet,
         payload: {
           ...initialState.player,
+          master: 'some-master',
           queue: [23, 184],
         },
       });
@@ -287,7 +288,7 @@ describe(globalEffects.name, () => {
     const action = queueShifted();
     const stateWithQueue: GlobalState = {
       ...initialState,
-      player: { ...initialState.player, queue: [8843, 23] },
+      player: { ...initialState.player, master: 'some-master', queue: [8843, 23] },
     };
 
     it('should play the first song on the queue and remove it from the queue', () => {
@@ -297,6 +298,7 @@ describe(globalEffects.name, () => {
         type: ActionTypeRemote.StateSet,
         payload: {
           ...initialState.player,
+          master: 'some-master',
           playing: true,
           songId: 8843,
           currentTime: 0,
@@ -315,7 +317,7 @@ describe(globalEffects.name, () => {
       const result = globalEffects(
         {
           ...initialState,
-          player: { ...initialState.player, queue: [17, 84, 23] },
+          player: { ...initialState.player, master: 'some-master', queue: [17, 84, 23] },
         },
         action,
       );
@@ -324,6 +326,7 @@ describe(globalEffects.name, () => {
         type: ActionTypeRemote.StateSet,
         payload: {
           ...initialState.player,
+          master: 'some-master',
           queue: [17, 23],
         },
       });
@@ -342,7 +345,7 @@ describe(globalEffects.name, () => {
       const result = globalEffects(
         {
           ...initialState,
-          player: { ...initialState.player, queue: [17, 84, 23] },
+          player: { ...initialState.player, master: 'some-master', queue: [17, 84, 23] },
         },
         action,
       );
@@ -351,6 +354,7 @@ describe(globalEffects.name, () => {
         type: ActionTypeRemote.StateSet,
         payload: {
           ...initialState.player,
+          master: 'some-master',
           queue: expectedResult,
         },
       });

+ 7 - 1
gmus-web/src/effects/effects.ts

@@ -94,7 +94,7 @@ export function globalEffects(prevState: GlobalState, action: LocalAction): Remo
       };
 
     case ActionTypeLocal.QueuePushed:
-      if (prevState.player.queue.includes(action.payload)) {
+      if (!prevState.player.master || prevState.player.queue.includes(action.payload)) {
         return null;
       }
       return {
@@ -105,6 +105,9 @@ export function globalEffects(prevState: GlobalState, action: LocalAction): Remo
         },
       };
     case ActionTypeLocal.QueueShifted:
+      if (!prevState.player.master) {
+        return null;
+      }
       return {
         type: ActionTypeRemote.StateSet,
         payload: {
@@ -117,6 +120,9 @@ export function globalEffects(prevState: GlobalState, action: LocalAction): Remo
         },
       };
     case ActionTypeLocal.QueueRemoved:
+      if (!prevState.player.master) {
+        return null;
+      }
       return {
         type: ActionTypeRemote.StateSet,
         payload: {