From a54ddf27c70c13b0d71e5aa197dd907ed8dfbb77 Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Sun, 21 Nov 2021 23:56:29 +0200
Subject: [PATCH] feat: delete & edit role.
---
.../Alerts/Roles/RoleDeleteAlert.js | 77 +++++++++++++++++++
.../Preferences/Users/Roles/RolesAlerts.js | 5 ++
.../Users/Roles/RolesForm/RolesForm.js | 26 +++++--
.../Users/Roles/RolesForm/RolesFormContent.js | 2 +-
.../Roles/RolesForm/RolesFormProvider.js | 22 ++++--
.../Users/Roles/RolesForm/components.js | 4 +-
src/hooks/query/roles.js | 16 ++++
src/lang/en/index.json | 5 +-
src/routes/preferences.js | 5 ++
9 files changed, 146 insertions(+), 16 deletions(-)
create mode 100644 src/containers/Alerts/Roles/RoleDeleteAlert.js
create mode 100644 src/containers/Preferences/Users/Roles/RolesAlerts.js
diff --git a/src/containers/Alerts/Roles/RoleDeleteAlert.js b/src/containers/Alerts/Roles/RoleDeleteAlert.js
new file mode 100644
index 000000000..cf2788959
--- /dev/null
+++ b/src/containers/Alerts/Roles/RoleDeleteAlert.js
@@ -0,0 +1,77 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+import { FormattedMessage as T, FormattedHTMLMessage } from 'components';
+import { Intent, Alert } from '@blueprintjs/core';
+import { AppToaster } from 'components';
+
+import { useDeleteRole } from 'hooks/query';
+
+import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect';
+import withAlertActions from 'containers/Alert/withAlertActions';
+
+import { compose } from 'utils';
+
+/**
+ * Role delete alert.
+ */
+function RoleDeleteAlert({
+ name,
+
+ // #withAlertStoreConnect
+ isOpen,
+ payload: { roleId },
+}) {
+ const { mutateAsync: deleteRole, isLoading } = useDeleteRole();
+
+ // Handle cancel delete role alert.
+ const handleCancelDelete = () => {
+ closeAlert(name);
+ };
+
+ // Handle confirm delete role.
+ const handleConfirmDeleteRole = () => {
+ deleteRole(roleId)
+ .then(() => {
+ AppToaster.show({
+ message: intl.get('roles.permission_schema.delete.alert_message'),
+ intent: Intent.SUCCESS,
+ });
+ })
+ .catch(
+ ({
+ response: {
+ data: { errors },
+ },
+ }) => {},
+ )
+ .finally(() => {
+ closeAlert(name);
+ });
+ };
+
+ return (
+
+