react-beautiful-dnd-next
Version:
Beautiful and accessible drag and drop for lists with React
38 lines (30 loc) • 862 B
JavaScript
// @flow
import { drop } from '../action-creators';
import type { State } from '../../types';
import type { MiddlewareStore, Dispatch, Action } from '../store-types';
export default (store: MiddlewareStore) => (next: Dispatch) => (
action: Action,
): any => {
// Always let the action go through first
next(action);
if (action.type !== 'PUBLISH_WHILE_DRAGGING') {
return;
}
// A bulk replace occurred - check if
// 1. there is a pending drop
// 2. that the pending drop is no longer waiting
const postActionState: State = store.getState();
// no pending drop after the publish
if (postActionState.phase !== 'DROP_PENDING') {
return;
}
// the pending drop is still waiting for completion
if (postActionState.isWaiting) {
return;
}
store.dispatch(
drop({
reason: postActionState.reason,
}),
);
};