Type the equalizer action creators

This commit is contained in:
Jordan Eldredge 2018-09-17 08:32:52 -07:00
parent 96ef91cff6
commit e71dac807d

View file

@ -1,10 +1,11 @@
import { BANDS } from "../constants";
import { SET_EQ_ON, SET_EQ_OFF, SET_BAND_VALUE } from "../actionTypes";
import { Band, Dispatchable } from "../types";
const BAND_SNAP_DISTANCE = 10;
const BAND_MID_POINT_VALUE = 50;
export function setEqBand(band, value) {
export function setEqBand(band: Band, value: number): Dispatchable {
if (
value < BAND_MID_POINT_VALUE + BAND_SNAP_DISTANCE &&
value > BAND_MID_POINT_VALUE - BAND_SNAP_DISTANCE
@ -14,37 +15,40 @@ export function setEqBand(band, value) {
return { type: SET_BAND_VALUE, band, value };
}
function _setEqTo(value) {
function _setEqTo(value: number): Dispatchable {
return dispatch => {
Object.keys(BANDS).forEach(key => {
Object.values(BANDS).forEach(band => {
dispatch({
type: SET_BAND_VALUE,
value,
band: BANDS[key]
band: band
});
});
};
}
export function setEqToMax() {
export function setEqToMax(): Dispatchable {
return _setEqTo(100);
}
export function setEqToMid() {
export function setEqToMid(): Dispatchable {
return _setEqTo(50);
}
export function setEqToMin() {
export function setEqToMin(): Dispatchable {
return _setEqTo(0);
}
export function setPreamp(value) {
export function setPreamp(value: number): Dispatchable {
return { type: SET_BAND_VALUE, band: "preamp", value };
}
export function toggleEq() {
export function toggleEq(): Dispatchable {
return (dispatch, getState) => {
const type = getState().equalizer.on ? SET_EQ_OFF : SET_EQ_ON;
dispatch({ type });
if (getState().equalizer.on) {
dispatch({ type: SET_EQ_OFF });
} else {
dispatch({ type: SET_EQ_ON });
}
};
}