this.props.deleteData(this.props.item, this.props.settingType);
+ handleDelete = () => {
+ this.props.deleteData(this.props.item, this.props.settingType);
+ this.setState({ showModalDelete: false });
+ }
render() {
return (
@@ -176,7 +173,6 @@ ListRow.defaultProps = {
};
ListRow.propTypes = {
- deleteActionSucceeded: PropTypes.bool.isRequired,
deleteData: PropTypes.func.isRequired,
item: PropTypes.object,
settingType: PropTypes.string,
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/actions.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/actions.js
index a5002ad023..8d6fdc3171 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/actions.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/actions.js
@@ -3,3 +3,20 @@
* App actions
*
*/
+
+import {
+ FREEZE_APP,
+ UNFREEZE_APP,
+} from './constants';
+
+export function freezeApp() {
+ return {
+ type: FREEZE_APP,
+ };
+}
+
+export function unfreezeApp() {
+ return {
+ type: UNFREEZE_APP,
+ };
+}
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/constants.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/constants.js
index f62c609507..8181110dba 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/constants.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/constants.js
@@ -3,3 +3,6 @@
* App constants
*
*/
+
+export const FREEZE_APP = 'UsersPermissions/App/FREEZE_APP';
+export const UNFREEZE_APP = 'UsersPermissions/App/UNFREEZE_APP';
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js
index 16efbef769..d3ede1b929 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js
@@ -20,6 +20,9 @@ import AuthPage from 'containers/AuthPage';
import EditPage from 'containers/EditPage';
import HomePage from 'containers/HomePage';
import NotFoundPage from 'containers/NotFoundPage';
+import OverlayBlocker from 'components/OverlayBlocker';
+
+import { makeSelectBlockApp } from './selectors';
class App extends React.Component {
componentDidMount() {
@@ -37,6 +40,7 @@ class App extends React.Component {
render() {
return (
+
@@ -55,6 +59,7 @@ App.contextTypes = {
};
App.propTypes = {
+ blockApp: PropTypes.bool.isRequired,
history: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
};
@@ -66,7 +71,9 @@ export function mapDispatchToProps(dispatch) {
);
}
-const mapStateToProps = createStructuredSelector({});
+const mapStateToProps = createStructuredSelector({
+ blockApp: makeSelectBlockApp(),
+});
// Wrap the component to inject dispatch and state into it
const withConnect = connect(mapStateToProps, mapDispatchToProps);
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/reducer.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/reducer.js
index 38026c39cd..ab8fc9825b 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/reducer.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/reducer.js
@@ -5,11 +5,21 @@
*/
import { fromJS } from 'immutable';
+import {
+ FREEZE_APP,
+ UNFREEZE_APP,
+} from './constants';
-const initialState = fromJS({});
+const initialState = fromJS({
+ blockApp: false,
+});
function appReducer(state = initialState, action) {
switch (action.type) {
+ case FREEZE_APP:
+ return state.set('blockApp', true);
+ case UNFREEZE_APP:
+ return state.set('blockApp', false);
default:
return state;
}
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/selectors.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/selectors.js
index 2393a073cd..b74dd3ebf5 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/selectors.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/selectors.js
@@ -1,9 +1,16 @@
-// import { createSelector } from 'reselect';
+import { createSelector } from 'reselect';
/**
* Direct selector to the list state domain
*/
-// const selectGlobalDomain = () => state => state.get('global');
+const selectGlobalDomain = () => state => state.get('global');
-export {};
+const makeSelectBlockApp = () => createSelector(
+ selectGlobalDomain(),
+ (globalState) => globalState.get('blockApp'),
+);
+
+export {
+ makeSelectBlockApp,
+};
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/index.js
index 1f579509be..10ee81114f 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/index.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/index.js
@@ -116,7 +116,6 @@ export class HomePage extends React.Component {
: (
list.splice(action.indexDataToDelete, 1))
.set('deleteEndPoint', '')
- .set('dataToDelete', Map({}))
- .set('deleteActionSucceeded', !state.get('deleteActionSucceeded'));
+ .set('dataToDelete', Map({}));
case FETCH_DATA_SUCCEEDED:
return state.set('data', List(action.data));
case ON_CHANGE:
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/saga.js b/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/saga.js
index 525318b740..a844897dec 100755
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/saga.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/HomePage/saga.js
@@ -1,6 +1,9 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { findIndex } from 'lodash';
import { takeLatest, put, fork, take, cancel, select, call } from 'redux-saga/effects';
+
+import { freezeApp, unfreezeApp } from 'containers/App/actions';
+
import request from 'utils/request';
import {
@@ -8,6 +11,7 @@ import {
fetchDataSucceeded,
setForm,
} from './actions';
+
import {
DELETE_DATA,
FETCH_DATA,
@@ -30,17 +34,19 @@ export function* dataDelete() {
const endPointAPI = yield select(makeSelectDeleteEndPoint());
if (indexDataToDelete !== -1) {
+ yield put(freezeApp());
const id = dataToDelete.id;
const requestURL = `/users-permissions/${endPointAPI}/${id}`;
- // TODO watchServerRestart
const response = yield call(request, requestURL, { method: 'DELETE' }, true);
if (response.ok) {
yield put(deleteDataSucceeded(indexDataToDelete));
+ yield put(unfreezeApp());
strapi.notification.success('users-permissions.notification.success.delete');
}
}
} catch(err) {
+ yield put(unfreezeApp());
strapi.notification.error('users-permissions.notification.error.delete');
}
}