// @flow
import type { Action, Dispatch } from '../store-types';
import type { StyleMarshal } from '../../view/use-style-marshal/style-marshal-types';

export default (marshal: StyleMarshal) => () => (next: Dispatch) => (
  action: Action,
): any => {
  if (action.type === 'INITIAL_PUBLISH') {
    marshal.dragging();
  }

  if (action.type === 'DROP_ANIMATE') {
    marshal.dropping(action.payload.completed.result.reason);
  }

  // this will clear any styles immediately before a reorder
  if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {
    marshal.resting();
  }

  next(action);
};
