import { ChonkyThunk } from '../../types/redux.types';
import { FileHelper } from '../../util/file-helper';
import { reduxActions } from '../reducers';
import { selectors } from '../selectors';

export const reduxThunks = {
    selectRange: (params: {
        rangeStart: number;
        rangeEnd: number;
        reset?: boolean;
    }): ChonkyThunk => (dispatch, getState) => {
        const state = getState();
        if (state.disableSelection) return;
        const displayFileIds = selectors.getDisplayFileIds(state);
        const fileIdsToSelect = displayFileIds
            .slice(params.rangeStart, params.rangeEnd + 1)
            .filter(id => id && FileHelper.isSelectable(state.fileMap[id])) as string[];
        dispatch(
            reduxActions.selectFiles({
                fileIds: fileIdsToSelect,
                reset: !!params.reset,
            })
        );
    },
};
