2017-01-26 18:53:52 +01:00
|
|
|
import { takeLatest } from 'redux-saga';
|
2017-04-21 17:19:41 +02:00
|
|
|
import { put, select, fork, call } from 'redux-saga/effects';
|
|
|
|
import request from 'utils/request';
|
2017-01-26 18:53:52 +01:00
|
|
|
|
|
|
|
import {
|
2017-04-21 17:19:41 +02:00
|
|
|
recordLoaded,
|
|
|
|
recordEdited,
|
|
|
|
recordEditError,
|
2017-01-26 18:53:52 +01:00
|
|
|
} from './actions';
|
|
|
|
|
|
|
|
import {
|
|
|
|
LOAD_RECORD,
|
2017-04-21 17:19:41 +02:00
|
|
|
EDIT_RECORD,
|
2017-01-26 18:53:52 +01:00
|
|
|
} from './constants';
|
|
|
|
|
2017-03-20 22:08:49 +01:00
|
|
|
import {
|
2017-04-21 17:19:41 +02:00
|
|
|
makeSelectCurrentModelName,
|
|
|
|
makeSelectRecord,
|
2017-03-20 22:08:49 +01:00
|
|
|
} from './selectors';
|
|
|
|
|
|
|
|
export function* getRecord(params) {
|
2017-04-21 17:19:41 +02:00
|
|
|
const currentModelName = yield select(makeSelectCurrentModelName());
|
2017-03-20 22:08:49 +01:00
|
|
|
|
|
|
|
try {
|
2017-04-21 17:19:41 +02:00
|
|
|
const requestURL = `http://localhost:1337/content-manager/explorer/${currentModelName}/${params.id}`;
|
|
|
|
|
|
|
|
// Call our request helper (see 'utils/request')
|
|
|
|
const data = yield call(request, requestURL, {
|
2017-03-20 22:08:49 +01:00
|
|
|
method: 'GET',
|
2017-04-21 17:19:41 +02:00
|
|
|
});
|
2017-01-26 18:53:52 +01:00
|
|
|
|
2017-04-21 17:19:41 +02:00
|
|
|
yield put(recordLoaded(data));
|
2017-03-20 22:08:49 +01:00
|
|
|
} catch (err) {
|
|
|
|
console.error(err);
|
|
|
|
}
|
2017-01-26 18:53:52 +01:00
|
|
|
}
|
2017-01-26 17:53:47 +01:00
|
|
|
|
2017-04-21 17:19:41 +02:00
|
|
|
export function* editRecord() {
|
|
|
|
const currentModelName = yield select(makeSelectCurrentModelName());
|
|
|
|
const record = yield select(makeSelectRecord());
|
|
|
|
const recordJSON = record.toJSON();
|
|
|
|
|
|
|
|
try {
|
|
|
|
const requestURL = `http://localhost:1337/content-manager/explorer/${currentModelName}/${recordJSON.id}`;
|
|
|
|
|
|
|
|
// Call our request helper (see 'utils/request')
|
|
|
|
yield call(request, requestURL, {
|
|
|
|
method: 'PUT',
|
|
|
|
body: recordJSON,
|
|
|
|
});
|
|
|
|
|
|
|
|
yield put(recordEdited());
|
|
|
|
window.Strapi.notification.success('The entry has been successfully updated.');
|
|
|
|
} catch (err) {
|
|
|
|
yield put(recordEditError());
|
|
|
|
window.Strapi.notification.error('An error occurred during record update.');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-01-26 17:53:47 +01:00
|
|
|
export function* defaultSaga() {
|
2017-04-21 17:19:41 +02:00
|
|
|
yield fork(takeLatest, LOAD_RECORD, getRecord);
|
|
|
|
yield fork(takeLatest, EDIT_RECORD, editRecord);
|
2017-01-26 17:53:47 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// All sagas to be loaded
|
|
|
|
export default [
|
|
|
|
defaultSaga,
|
|
|
|
];
|