Skip to content

Commit

Permalink
Add 'Stage' option ('Preserved users')
Browse files Browse the repository at this point in the history
The 'Stage' option allows to move
a given user from 'Preserved' to
'Stage'.

Signed-off-by: Carla Martinez <carlmart@redhat.com>
  • Loading branch information
carma12 committed Jan 11, 2024
1 parent a12e604 commit 860a600
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 3 deletions.
24 changes: 23 additions & 1 deletion src/components/UserSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ import RebuildAutoMembership from "./modals/RebuildAutoMembership";
import UnlockUser from "./modals/UnlockUser";
import ResetPassword from "./modals/ResetPassword";
import IssueNewCertificate from "./modals/IssueNewCertificate";
import StagePreservedUsers from "./modals/StagePreservedUsers";
// Navigation
import { useNavigate } from "react-router-dom";
import { URL_PREFIX } from "src/navigation/NavRoutes";

export interface PropsToUserSettings {
originalUser: Partial<User>;
Expand All @@ -78,6 +82,9 @@ const UserSettings = (props: PropsToUserSettings) => {
// Alerts to show in the UI
const alerts = useAlerts();

// Navigate
const navigate = useNavigate();

// RTK hook: save user (acive/preserved and stage)
let [saveUser] = useSaveUserMutation();
if (props.from === "stage-users") {
Expand Down Expand Up @@ -173,6 +180,12 @@ const UserSettings = (props: PropsToUserSettings) => {
setIsNewCertificateModalOpen(false);
};

// Preserved users - 'Stage' option
const [isStageModalOpen, setIsStageModalOpen] = React.useState(false);
const onCloseStageModal = () => {
setIsStageModalOpen(false);
};

// Kebab
const [isKebabOpen, setIsKebabOpen] = useState(false);

Expand Down Expand Up @@ -230,7 +243,9 @@ const UserSettings = (props: PropsToUserSettings) => {
];

const preservedDropdownItems = [
<DropdownItem key="stage">Stage</DropdownItem>,
<DropdownItem key="stage" onClick={() => setIsStageModalOpen(true)}>
Stage
</DropdownItem>,
<DropdownItem key="restore">Restore</DropdownItem>,
<DropdownItem key="delete" onClick={() => setIsDeleteModalOpen(true)}>
Delete
Expand Down Expand Up @@ -523,6 +538,13 @@ const UserSettings = (props: PropsToUserSettings) => {
showPrincipalFields={false}
onRefresh={props.onRefresh}
/>
<StagePreservedUsers
show={isStageModalOpen}
handleModalToggle={onCloseStageModal}
selectedUsersData={selectedUsersData}
navigateFunc={navigate}
navigateTo={URL_PREFIX + "/preserved-users"}
/>
</>
);
};
Expand Down
4 changes: 4 additions & 0 deletions src/components/modals/RestorePreservedUsers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import ErrorModal from "./ErrorModal";
import { ErrorData } from "src/utils/datatypes/globalDataTypes";
// Hooks
import useAlerts from "src/hooks/useAlerts";
// Navigation
import { NavigateFunction } from "react-router-dom";

interface SelectedUsersData {
selectedUsers: string[];
Expand All @@ -38,6 +40,8 @@ export interface PropsToPreservedUsers {
handleModalToggle: () => void;
selectedUsersData: SelectedUsersData;
onRefresh?: () => void;
navigateFunc?: NavigateFunction;
navigateTo?: string;
}

const RestorePreservedUsers = (props: PropsToPreservedUsers) => {
Expand Down
9 changes: 9 additions & 0 deletions src/components/modals/StagePreservedUsers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,16 @@ const StagePreservedUsers = (props: PropsToPreservedUsers) => {
// Show alert: success
alerts.addAlert("stage-users-success", "Users staged", "success");

// Close modal
closeModal();

// Navigate to selected page
if (
props.navigateFunc !== undefined &&
props.navigateTo !== undefined
) {
props.navigateFunc(props.navigateTo);
}
}
} else if (error) {
// Handle error
Expand Down
4 changes: 2 additions & 2 deletions src/components/tables/UsersDisplayTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const UsersDisplayTable = (props: PropsToDisplayUsersTable) => {
case "stage-users":
stageUsersListCopy.map((user) => {
props.usersToDisplay.map((selected) => {
if (user.uid === selected || user.uid[0] === selected) {
if (user.uid[0] === selected[0] || user.uid[0] === selected) {
usersToDisplay.push(user);
}
});
Expand All @@ -63,7 +63,7 @@ const UsersDisplayTable = (props: PropsToDisplayUsersTable) => {
case "preserved-users":
preservedUsersListCopy.map((user) => {
props.usersToDisplay.map((selected) => {
if (user.uid === selected || user.uid[0] === selected) {
if (user.uid[0] === selected[0] || user.uid[0] === selected) {
usersToDisplay.push(user);
}
});
Expand Down

0 comments on commit 860a600

Please sign in to comment.