2017-11-06 17:03:20 +01:00
|
|
|
import { LOCATION_CHANGE } from 'react-router-redux';
|
2017-11-07 14:32:31 +01:00
|
|
|
import { takeLatest, put, fork, take, cancel, select } from 'redux-saga/effects';
|
|
|
|
import { findIndex } from 'lodash';
|
2017-11-06 17:03:20 +01:00
|
|
|
|
2017-11-07 14:32:31 +01:00
|
|
|
import { deleteDataSucceeded, fetchDataSucceeded } from './actions';
|
|
|
|
import { DELETE_DATA, FETCH_DATA } from './constants';
|
2017-11-06 17:03:20 +01:00
|
|
|
import data from './data.json';
|
2017-11-07 14:32:31 +01:00
|
|
|
import {
|
|
|
|
makeSelectAllData,
|
|
|
|
makeSelectDataToDelete,
|
|
|
|
// makeSelectDeleteEndPoint,
|
|
|
|
} from './selectors';
|
|
|
|
|
|
|
|
export function* dataDelete() {
|
|
|
|
try {
|
|
|
|
const allData = yield select(makeSelectAllData());
|
|
|
|
const dataToDelete = yield select(makeSelectDataToDelete());
|
|
|
|
const indexDataToDelete = findIndex(allData, ['name', dataToDelete.name]);
|
|
|
|
|
|
|
|
if (indexDataToDelete !== -1) {
|
|
|
|
yield put(deleteDataSucceeded(indexDataToDelete));
|
|
|
|
|
|
|
|
window.Strapi.notification.success('users-permissions.notification.success.delete')
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch(err) {
|
|
|
|
window.Strapi.notification.error('users-permissions.notification.error.delete');
|
|
|
|
}
|
|
|
|
}
|
2017-11-06 17:03:20 +01:00
|
|
|
|
|
|
|
export function* dataFetch(action) {
|
|
|
|
try {
|
|
|
|
const response = data[action.endPoint];
|
|
|
|
|
|
|
|
yield put(fetchDataSucceeded(response));
|
|
|
|
|
|
|
|
} catch(err) {
|
2017-11-07 14:32:31 +01:00
|
|
|
window.Strapi.notification.error('users-permissions.notification.error.fetch');
|
2017-11-06 17:03:20 +01:00
|
|
|
}
|
|
|
|
}
|
2017-11-06 11:14:43 +01:00
|
|
|
|
|
|
|
// Individual exports for testing
|
|
|
|
export function* defaultSaga() {
|
2017-11-06 17:03:20 +01:00
|
|
|
const loadDataWatcher = yield fork(takeLatest, FETCH_DATA, dataFetch);
|
|
|
|
|
2017-11-07 14:32:31 +01:00
|
|
|
yield fork(takeLatest, DELETE_DATA, dataDelete);
|
2017-11-06 17:03:20 +01:00
|
|
|
yield take(LOCATION_CHANGE);
|
|
|
|
yield cancel(loadDataWatcher);
|
2017-11-06 11:14:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// All sagas to be loaded
|
|
|
|
export default defaultSaga;
|