import gaze from 'gaze'
import { modifiedFile } from '../helpers/formatted-file.js'
import {
SET_WATCHER_PREPARATIONS,
CLEAR_WATCHER_PREPARATIONS
} from '../constants/actionTypes.js'
import { setModifiedFile, handleError } from '../actions/creators.js'
const Watcher = ({ dispatch, getState }) => {
const state = getState()
const watch = getStateLeaf(state, 'WATCH')
const watching = getStateLeaf(state, 'WATCHING')
if (watch && !watching) {
dispatch({ type: SET_WATCHER_PREPARATIONS })
gaze.on('all', (event, filepath) => {
return dispatch(setModifiedFile(modifiedFile(event, filepath)))
})
gaze.on('ready', () => dispatch({ type: CLEAR_WATCHER_PREPARATIONS }))
gaze.on('error', error => dispatch(handleError(error)))
}
}
const getStateLeaf = (state, leaf) => {
switch(leaf) {
case 'WATCH':
return state.watcher.watch
case 'WATCHING':
return state.watcher.watching
}
}
export default Watcher
|