From 9bbc0d5044bd7c98d04eb33e0a5b85adc665bb1d Mon Sep 17 00:00:00 2001 From: Carla Martinez Date: Tue, 12 Dec 2023 10:15:23 +0100 Subject: [PATCH] Add 'Stage' option ('Preserved users') The 'Stage' option allows to move a given user from 'Preserved' to 'Stage'. Signed-off-by: Carla Martinez --- src/components/UserSettings.tsx | 18 +++++++++++- .../modals/RestorePreservedUsers.tsx | 8 ++---- src/components/modals/StagePreservedUsers.tsx | 28 +++++++++++-------- src/pages/PreservedUsers/PreservedUsers.tsx | 7 +++-- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/components/UserSettings.tsx b/src/components/UserSettings.tsx index 12dbc4d3..95e34646 100644 --- a/src/components/UserSettings.tsx +++ b/src/components/UserSettings.tsx @@ -56,6 +56,7 @@ import ResetPassword from "./modals/ResetPassword"; import IssueNewCertificate from "./modals/IssueNewCertificate"; import AddOtpToken from "./modals/AddOtpToken"; import ActivateStageUsers from "./modals/ActivateStageUsers"; +import StagePreservedUsers from "./modals/StagePreservedUsers"; // Utils import { API_VERSION_BACKUP } from "src/utils/utils"; // Navigate @@ -246,6 +247,12 @@ const UserSettings = (props: PropsToUserSettings) => { setIsActivateModalOpen(false); }; + // Preserved users - 'Stage' option + const [isStageModalOpen, setIsStageModalOpen] = React.useState(false); + const onCloseStageModal = () => { + setIsStageModalOpen(false); + }; + // Kebab const [isKebabOpen, setIsKebabOpen] = useState(false); @@ -317,7 +324,9 @@ const UserSettings = (props: PropsToUserSettings) => { ]; const preservedDropdownItems = [ - Stage, + setIsStageModalOpen(true)}> + Stage + , Restore, setIsDeleteModalOpen(true)}> Delete @@ -624,6 +633,13 @@ const UserSettings = (props: PropsToUserSettings) => { selectedUids={selectedUsers} onSuccess={() => navigate(URL_PREFIX + "/stage-users")} /> + navigate(URL_PREFIX + "/preserved-users")} + /> ); }; diff --git a/src/components/modals/RestorePreservedUsers.tsx b/src/components/modals/RestorePreservedUsers.tsx index c70349bc..386c10d4 100644 --- a/src/components/modals/RestorePreservedUsers.tsx +++ b/src/components/modals/RestorePreservedUsers.tsx @@ -37,7 +37,7 @@ export interface PropsToPreservedUsers { show: boolean; handleModalToggle: () => void; selectedUsersData: SelectedUsersData; - onRefresh?: () => void; + onSuccess: () => void; } const RestorePreservedUsers = (props: PropsToPreservedUsers) => { @@ -165,10 +165,8 @@ const RestorePreservedUsers = (props: PropsToPreservedUsers) => { // Reset selected values props.selectedUsersData.updateSelectedUsers([]); - // Refresh data - if (props.onRefresh !== undefined) { - props.onRefresh(); - } + // Refresh data or redirect + props.onSuccess(); // Show alert: success alerts.addAlert( diff --git a/src/components/modals/StagePreservedUsers.tsx b/src/components/modals/StagePreservedUsers.tsx index efd0fb7e..d0b9672f 100644 --- a/src/components/modals/StagePreservedUsers.tsx +++ b/src/components/modals/StagePreservedUsers.tsx @@ -27,9 +27,16 @@ import ErrorModal from "./ErrorModal"; import { ErrorData } from "src/utils/datatypes/globalDataTypes"; // Hooks import useAlerts from "src/hooks/useAlerts"; -import { PropsToPreservedUsers } from "./RestorePreservedUsers"; -const StagePreservedUsers = (props: PropsToPreservedUsers) => { +export interface PropsToStagePreservedUsers { + show: boolean; + handleModalToggle: () => void; + selectedUsers: string[]; + updateSelectedUsers: (newSelectedUsers: string[]) => void; + onSuccess: () => void; +} + +const StagePreservedUsers = (props: PropsToStagePreservedUsers) => { // Set dispatch (Redux) const dispatch = useAppDispatch(); @@ -55,7 +62,7 @@ const StagePreservedUsers = (props: PropsToPreservedUsers) => { id: "stage-users-table", pfComponent: ( ), @@ -115,7 +122,7 @@ const StagePreservedUsers = (props: PropsToPreservedUsers) => { setBtnSpinning(true); - props.selectedUsersData.selectedUsers.map((uid) => { + props.selectedUsers.map((uid) => { const payloadItem = { method: "user_stage", params: [[uid], {}], @@ -147,22 +154,21 @@ const StagePreservedUsers = (props: PropsToPreservedUsers) => { handleAPIError(error); } else { // Update data from Redux - props.selectedUsersData.selectedUsers.map((user) => { + props.selectedUsers.map((user) => { dispatch(removePreservedUser(user[0])); }); // Reset selected values - props.selectedUsersData.updateSelectedUsers([]); - - // Refresh data - if (props.onRefresh !== undefined) { - props.onRefresh(); - } + props.updateSelectedUsers([]); // Show alert: success alerts.addAlert("stage-users-success", "Users staged", "success"); + // Close modal closeModal(); + + // Navigate to selected page + props.onSuccess(); } } else if (error) { // Handle error diff --git a/src/pages/PreservedUsers/PreservedUsers.tsx b/src/pages/PreservedUsers/PreservedUsers.tsx index a5ac3367..0a7030e8 100644 --- a/src/pages/PreservedUsers/PreservedUsers.tsx +++ b/src/pages/PreservedUsers/PreservedUsers.tsx @@ -497,13 +497,14 @@ const PreservedUsers = () => { show={showRestoreModal} handleModalToggle={onRestoreModalToggle} selectedUsersData={selectedUsersData} - onRefresh={refreshUsersData} + onSuccess={refreshUsersData} /> );