mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-02-12 17:40:47 +03:00
* stash * more * cli rename * Remove reference * Fix another reference * Fix scripts * Fix package name * Fix tsconfig
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
// Based on https://github.com/gaearon/redux-devtools/pull/241
|
|
/* eslint-disable no-param-reassign */
|
|
|
|
import { State } from '../reducers/instances';
|
|
|
|
export default function commitExcessActions(liftedState: State, n = 1) {
|
|
// Auto-commits n-number of excess actions.
|
|
let excess = n;
|
|
let idsToDelete = liftedState.stagedActionIds.slice(1, excess + 1);
|
|
|
|
for (let i = 0; i < idsToDelete.length; i++) {
|
|
if (liftedState.computedStates[i + 1].error) {
|
|
// Stop if error is found. Commit actions up to error.
|
|
excess = i;
|
|
idsToDelete = liftedState.stagedActionIds.slice(1, excess + 1);
|
|
break;
|
|
} else {
|
|
delete liftedState.actionsById[idsToDelete[i]];
|
|
}
|
|
}
|
|
|
|
liftedState.skippedActionIds = liftedState.skippedActionIds.filter(
|
|
(id) => idsToDelete.indexOf(id) === -1
|
|
);
|
|
liftedState.stagedActionIds = [
|
|
0,
|
|
...liftedState.stagedActionIds.slice(excess + 1),
|
|
];
|
|
liftedState.committedState = liftedState.computedStates[excess].state;
|
|
liftedState.computedStates = liftedState.computedStates.slice(excess);
|
|
liftedState.currentStateIndex =
|
|
liftedState.currentStateIndex > excess
|
|
? liftedState.currentStateIndex - excess
|
|
: 0;
|
|
}
|