107 lines
2.7 KiB
JavaScript
Raw Normal View History

2016-09-25 21:54:59 +02:00
/**
* Gets the generalSettingsitories of the user from Github
*/
import { take, call, put, select, fork, cancel } from 'redux-saga/effects';
import { LOCATION_CHANGE } from 'react-router-redux';
2016-09-26 17:28:40 +02:00
import {
LOAD_GENERAL_SETTINGS,
UPDATE_GENERAL_SETTINGS,
} from 'containers/HomePage/constants';
2016-09-27 18:06:35 +02:00
import {
generalSettingsLoaded,
generalSettingsLoadingError,
generalSettingsUpdated,
generalSettingsUpdatedError,
} from 'containers/HomePage/actions';
2016-09-26 18:28:32 +02:00
import {
selectName,
selectDescription,
selectVersion,
} from 'containers/HomePage/selectors';
2016-09-25 21:54:59 +02:00
import request from 'utils/request';
/**
* Github generalSettings request/response handler
*/
export function* getGeneralSettings() {
const requestURL = `http://localhost:1337/settingsmanager/settings/general`;
// Call our request helper (see 'utils/request')
const generalSettings = yield call(request, requestURL);
if (!generalSettings.err) {
yield put(generalSettingsLoaded(generalSettings.data));
} else {
yield put(repoLoadingError(generalSettings.err));
}
}
2016-09-26 17:28:40 +02:00
export function* updateGeneralSettings() {
const data = {
name: yield select(selectName()),
2016-09-26 18:28:32 +02:00
description: yield select(selectDescription()),
version: yield select(selectVersion()),
2016-09-26 17:28:40 +02:00
};
const requestURL = `http://localhost:1337/settingsmanager/settings`;
// Call our request helper (see 'utils/request')
const generalSettings = yield call(
request,
requestURL, {
method: 'PUT',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}
);
2016-09-27 18:06:35 +02:00
if (!generalSettings.err) {
2016-09-30 18:24:46 +02:00
window.Strapi.notification.success('Your settings have successfully updated.');
2016-09-27 18:06:35 +02:00
yield put(generalSettingsUpdated(generalSettings.data));
} else {
2016-09-30 18:24:46 +02:00
window.Strapi.notification.error('An error occurred during settings update.');
2016-09-27 18:06:35 +02:00
yield put(generalSettingsUpdatedError(generalSettings.err));
}
2016-09-26 17:28:40 +02:00
}
2016-09-25 21:54:59 +02:00
/**
* Watches for LOAD_REPOS action and calls handler
*/
export function* getGeneralSettingsWatcher() {
while (yield take(LOAD_GENERAL_SETTINGS)) {
yield call(getGeneralSettings);
}
}
2016-09-26 17:28:40 +02:00
export function* updateGeneralSettingsWatcher() {
while (yield take(UPDATE_GENERAL_SETTINGS)) {
yield call(updateGeneralSettings);
}
}
2016-09-25 21:54:59 +02:00
/**
* Root saga manages watcher lifecycle
*/
export function* generalSettingsData() {
// Fork watcher so we can continue execution
2016-09-26 17:28:40 +02:00
2016-09-25 21:54:59 +02:00
const watcher = yield fork(getGeneralSettingsWatcher);
2016-09-26 17:28:40 +02:00
const updateWatcher = yield fork(updateGeneralSettingsWatcher);
2016-09-25 21:54:59 +02:00
// Suspend execution until location changes
yield take(LOCATION_CHANGE);
yield cancel(watcher);
}
// Bootstrap sagas
export default [
generalSettingsData,
];