mirror of
				https://github.com/reduxjs/redux-devtools.git
				synced 2025-10-31 07:57:39 +03:00 
			
		
		
		
	Fix usage of filtered actions with slider-monitor (#983)
* Use jumpToAction instead of jumpToState * Jumping to action is time traveling * Fix bad null check * Fix types * Fix JUMP_TO_ACTION handling * Use indexOf
This commit is contained in:
		
							parent
							
								
									3930411ade
								
							
						
					
					
						commit
						b4f2958dda
					
				|  | @ -51,7 +51,8 @@ export default class Monitor<S, A extends Action<unknown>> { | |||
|     this.lastAction && /^@@redux\/(INIT|REPLACE)/.test(this.lastAction); | ||||
|   isMonitorAction = () => | ||||
|     this.lastAction && this.lastAction !== 'PERFORM_ACTION'; | ||||
|   isTimeTraveling = () => this.lastAction === 'JUMP_TO_STATE'; | ||||
|   isTimeTraveling = () => | ||||
|     this.lastAction === 'JUMP_TO_STATE' || this.lastAction === 'JUMP_TO_ACTION'; | ||||
|   isPaused = () => { | ||||
|     if (this.paused) { | ||||
|       if (this.lastAction !== 'BLOCKED') { | ||||
|  |  | |||
|  | @ -104,11 +104,9 @@ export interface MonitorActionAction { | |||
| export interface JumpToStateAction { | ||||
|   type: 'JUMP_TO_STATE'; | ||||
|   index: number; | ||||
|   actionId: number; | ||||
| } | ||||
| export interface JumpToActionAction { | ||||
|   type: 'JUMP_TO_ACTION'; | ||||
|   index: number; | ||||
|   actionId: number; | ||||
| } | ||||
| export interface PauseRecordingAction { | ||||
|  |  | |||
|  | @ -217,10 +217,10 @@ export function dispatchAction( | |||
|   if (action.type === 'JUMP_TO_STATE' || action.type === 'JUMP_TO_ACTION') { | ||||
|     const id = state.selected || state.current; | ||||
|     const liftedState = state.states[id]; | ||||
|     let currentStateIndex = action.index; | ||||
|     if (typeof currentStateIndex === 'undefined' && action.actionId) { | ||||
|       currentStateIndex = liftedState.stagedActionIds.indexOf(action.actionId); | ||||
|     } | ||||
|     const currentStateIndex = | ||||
|       action.type === 'JUMP_TO_STATE' | ||||
|         ? action.index | ||||
|         : liftedState.stagedActionIds.indexOf(action.actionId); | ||||
|     return { | ||||
|       ...state, | ||||
|       states: { | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import reducer from './reducers'; | |||
| import SliderButton from './SliderButton'; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/unbound-method
 | ||||
| const { reset, jumpToState } = ActionCreators; | ||||
| const { reset, jumpToAction } = ActionCreators; | ||||
| 
 | ||||
| interface ExternalProps<S, A extends Action<unknown>> { | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|  | @ -151,11 +151,12 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|       this.pauseReplay(); | ||||
|     } | ||||
| 
 | ||||
|     this.props.dispatch(jumpToState(value)); | ||||
|     this.props.dispatch(jumpToAction(this.props.stagedActionIds[value])); | ||||
|   }; | ||||
| 
 | ||||
|   startReplay = () => { | ||||
|     const { computedStates, currentStateIndex, dispatch } = this.props; | ||||
|     const { computedStates, currentStateIndex, dispatch, stagedActionIds } = | ||||
|       this.props; | ||||
| 
 | ||||
|     if (computedStates.length < 2) { | ||||
|       return; | ||||
|  | @ -164,20 +165,20 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
| 
 | ||||
|     let stateIndex; | ||||
|     if (currentStateIndex === computedStates.length - 1) { | ||||
|       dispatch(jumpToState(0)); | ||||
|       dispatch(jumpToAction(stagedActionIds[0])); | ||||
|       stateIndex = 0; | ||||
|     } else if (currentStateIndex === computedStates.length - 2) { | ||||
|       dispatch(jumpToState(currentStateIndex + 1)); | ||||
|       dispatch(jumpToAction(stagedActionIds[currentStateIndex + 1])); | ||||
|       return; | ||||
|     } else { | ||||
|       stateIndex = currentStateIndex + 1; | ||||
|       dispatch(jumpToState(currentStateIndex + 1)); | ||||
|       dispatch(jumpToAction(stagedActionIds[currentStateIndex + 1])); | ||||
|     } | ||||
| 
 | ||||
|     let counter = stateIndex; | ||||
|     const timer = window.setInterval(() => { | ||||
|       if (counter + 1 <= computedStates.length - 1) { | ||||
|         dispatch(jumpToState(counter + 1)); | ||||
|         dispatch(jumpToAction(stagedActionIds[counter + 1])); | ||||
|       } | ||||
|       counter += 1; | ||||
| 
 | ||||
|  | @ -198,7 +199,7 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|     } | ||||
| 
 | ||||
|     if (this.props.currentStateIndex === this.props.computedStates.length - 1) { | ||||
|       this.props.dispatch(jumpToState(0)); | ||||
|       this.props.dispatch(jumpToAction(this.props.stagedActionIds[0])); | ||||
| 
 | ||||
|       this.loop(0); | ||||
|     } else { | ||||
|  | @ -213,7 +214,11 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|     const aLoop = () => { | ||||
|       const replayDiff = Date.now() - currentTimestamp; | ||||
|       if (replayDiff >= timestampDiff) { | ||||
|         this.props.dispatch(jumpToState(this.props.currentStateIndex + 1)); | ||||
|         this.props.dispatch( | ||||
|           jumpToAction( | ||||
|             this.props.stagedActionIds[this.props.currentStateIndex + 1] | ||||
|           ) | ||||
|         ); | ||||
| 
 | ||||
|         if ( | ||||
|           this.props.currentStateIndex >= | ||||
|  | @ -275,7 +280,11 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|     this.pauseReplay(); | ||||
| 
 | ||||
|     if (this.props.currentStateIndex !== 0) { | ||||
|       this.props.dispatch(jumpToState(this.props.currentStateIndex - 1)); | ||||
|       this.props.dispatch( | ||||
|         jumpToAction( | ||||
|           this.props.stagedActionIds[this.props.currentStateIndex - 1] | ||||
|         ) | ||||
|       ); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|  | @ -283,7 +292,11 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|     this.pauseReplay(); | ||||
| 
 | ||||
|     if (this.props.currentStateIndex !== this.props.computedStates.length - 1) { | ||||
|       this.props.dispatch(jumpToState(this.props.currentStateIndex + 1)); | ||||
|       this.props.dispatch( | ||||
|         jumpToAction( | ||||
|           this.props.stagedActionIds[this.props.currentStateIndex + 1] | ||||
|         ) | ||||
|       ); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user