87 lines
2.3 KiB
JavaScript
Raw Normal View History

import { get } from 'lodash';
import { all, fork, call, put, select, takeLatest } from 'redux-saga/effects';
2019-04-16 11:53:29 +02:00
import { auth, request } from 'strapi-helper-plugin';
import { pluginDeleted } from '../App/actions';
import { selectLocale } from '../LanguageProvider/selectors';
import { deletePluginSucceeded, getPluginsSucceeded } from './actions';
import { GET_PLUGINS, ON_DELETE_PLUGIN_CONFIRM } from './constants';
import { makeSelectPluginToDelete } from './selectors';
/* eslint-disable */
export function* deletePlugin() {
try {
const plugin = yield select(makeSelectPluginToDelete());
2018-03-06 18:32:39 +01:00
const requestUrl = `/admin/plugins/uninstall/${plugin}`;
const resp = yield call(request, requestUrl, { method: 'DELETE' });
if (resp.ok) {
yield put(deletePluginSucceeded(plugin));
yield put(pluginDeleted(plugin));
if (plugin === 'users-permissions') {
auth.clearAppStorage();
}
}
2019-04-16 11:53:29 +02:00
} catch (error) {
yield put(deletePluginSucceeded(false));
2019-04-16 11:53:29 +02:00
strapi.notification.error(
2019-07-18 19:28:52 +02:00
'app.components.listPluginsPage.deletePlugin.error'
2019-04-16 11:53:29 +02:00
);
}
}
export function* pluginsGet() {
try {
// Fetch plugins.
2018-11-06 09:56:27 +01:00
const response = yield all([
2018-03-08 10:32:01 +01:00
call(request, '/admin/plugins', { method: 'GET' }),
2018-11-06 09:56:27 +01:00
]);
const locale = yield select(selectLocale());
console.log({ response });
const opts = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
params: {
lang: locale,
},
};
let availablePlugins;
try {
2019-07-05 03:05:36 +02:00
// Fetch plugins information.
2019-04-16 11:53:29 +02:00
availablePlugins = yield call(
request,
'https://marketplace.strapi.io/plugins',
2019-07-18 19:28:52 +02:00
opts
2019-04-16 11:53:29 +02:00
);
} catch (e) {
availablePlugins = [];
}
// Add logo URL to object.
2018-03-08 10:32:01 +01:00
Object.keys(response[0].plugins).map(name => {
2019-04-16 11:53:29 +02:00
response[0].plugins[name].logo = get(
availablePlugins.find(plugin => plugin.id === name),
'logo',
2019-07-18 19:28:52 +02:00
''
2019-04-16 11:53:29 +02:00
);
});
2018-03-08 10:32:01 +01:00
yield put(getPluginsSucceeded(response[0]));
2019-04-16 11:53:29 +02:00
} catch (err) {
2017-12-07 13:17:39 +01:00
strapi.notification.error('notification.error');
}
}
// Individual exports for testing
export default function* defaultSaga() {
yield fork(takeLatest, ON_DELETE_PLUGIN_CONFIRM, deletePlugin);
yield fork(takeLatest, GET_PLUGINS, pluginsGet);
}