Skip to content

Commit 592409d

Browse files
committed
Extract remove user agency rights button props & modal portal to a dedicated component
Signed-off-by: Benjamin Bohec <bbohec.pro@gmail.com>
1 parent ad6850c commit 592409d

5 files changed

Lines changed: 324 additions & 174 deletions

File tree

front/src/app/components/agency/AgencyUsers.tsx

Lines changed: 2 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { fr } from "@codegouvfr/react-dsfr";
22
import Button from "@codegouvfr/react-dsfr/Button";
3-
import { ButtonsGroup } from "@codegouvfr/react-dsfr/ButtonsGroup";
43
import { createModal } from "@codegouvfr/react-dsfr/Modal";
54
import { partition, values } from "ramda";
65
import { Fragment, useMemo, useState } from "react";
@@ -22,7 +21,6 @@ import {
2221
connectedUsersAdminSlice,
2322
} from "src/core-logic/domain/admin/connectedUsersAdmin/connectedUsersAdmin.slice";
2423
import { createUserOnAgencySlice } from "src/core-logic/domain/agencies/create-user-on-agency/createUserOnAgency.slice";
25-
import { removeUserFromAgencySlice } from "src/core-logic/domain/agencies/remove-user-from-agency/removeUserFromAgency.slice";
2624
import { updateUserOnAgencySlice } from "src/core-logic/domain/agencies/update-user-on-agency/updateUserOnAgency.slice";
2725
import { feedbackSlice } from "src/core-logic/domain/feedback/feedback.slice";
2826
import { v4 as uuidV4 } from "uuid";
@@ -45,9 +43,7 @@ export const AgencyUsers = ({
4543
const manageUserModalId = isLocationAdmin
4644
? domElementIds.admin.agencyTab.editAgencyManageUserModal
4745
: domElementIds.agencyDashboard.agencyDetails.editAgencyManageUserModal;
48-
const removeUserModalId = isLocationAdmin
49-
? domElementIds.admin.agencyTab.editAgencyRemoveUserModal
50-
: domElementIds.agencyDashboard.agencyDetails.editAgencyRemoveUserModal;
46+
5147
const manageUserModal = useMemo(
5248
() =>
5349
createModal({
@@ -57,21 +53,13 @@ export const AgencyUsers = ({
5753
[manageUserModalId],
5854
);
5955

60-
const removeUserModal = useMemo(
61-
() =>
62-
createModal({
63-
isOpenedByDefault: false,
64-
id: removeUserModalId,
65-
}),
66-
[removeUserModalId],
67-
);
6856
const dispatch = useDispatch();
6957

7058
const [selectedUserData, setSelectedUserData] = useState<
7159
(UserParamsForAgency & { isIcUser: boolean }) | null
7260
>(null);
7361

74-
const [mode, setMode] = useState<"add" | "update" | "delete" | null>(null);
62+
const [mode, setMode] = useState<"add" | "update" | null>(null);
7563

7664
const onModifyClicked = (
7765
agencyUser: ConnectedUserWithNormalizedAgencyRights,
@@ -89,22 +77,6 @@ export const AgencyUsers = ({
8977
manageUserModal.open();
9078
};
9179

92-
const onDeleteClicked = (
93-
agencyUser: ConnectedUserWithNormalizedAgencyRights,
94-
) => {
95-
dispatch(feedbackSlice.actions.clearFeedbacksTriggered());
96-
setMode("delete");
97-
setSelectedUserData({
98-
agencyId: agency.id,
99-
userId: agencyUser.id,
100-
roles: agencyUser.agencyRights[agency.id].roles,
101-
email: agencyUser.email,
102-
isNotifiedByEmail: agencyUser.agencyRights[agency.id].isNotifiedByEmail,
103-
isIcUser: !!agencyUser.proConnect,
104-
});
105-
removeUserModal.open();
106-
};
107-
10880
const agencyRefersToOtherAgency = agency.refersToAgencyId !== null;
10981

11082
const [agencyUsers, agencyUsersInOtherAgency] = agencyRefersToOtherAgency
@@ -153,22 +125,6 @@ export const AgencyUsers = ({
153125
);
154126
};
155127

156-
const onUserRemoveSubmitted = () => {
157-
if (!selectedUserData) return;
158-
159-
dispatch(
160-
removeUserFromAgencySlice.actions.removeUserFromAgencyRequested({
161-
userId: selectedUserData.userId,
162-
agencyId: agency.id,
163-
feedbackTopic: isLocationAdmin
164-
? "agency-user"
165-
: "agency-user-for-dashboard",
166-
}),
167-
);
168-
169-
removeUserModal.close();
170-
};
171-
172128
return (
173129
<>
174130
<h2 className={fr.cx("fr-h5", "fr-mb-1v", "fr-mt-4w")}>Utilisateurs</h2>
@@ -220,7 +176,6 @@ export const AgencyUsers = ({
220176
agencyUsers={agencyUsers}
221177
agency={agency}
222178
onModifyClicked={onModifyClicked}
223-
onDeleteClicked={onDeleteClicked}
224179
routeName={routeName}
225180
/>
226181

@@ -237,7 +192,6 @@ export const AgencyUsers = ({
237192
agencyUsers={agencyUsersInOtherAgency}
238193
agency={agency}
239194
onModifyClicked={onModifyClicked}
240-
onDeleteClicked={onDeleteClicked}
241195
routeName={routeName}
242196
/>
243197
</>
@@ -284,36 +238,6 @@ export const AgencyUsers = ({
284238
</manageUserModal.Component>,
285239
document.body,
286240
)}
287-
288-
{createPortal(
289-
<removeUserModal.Component title="Confirmer la suppression">
290-
<p>
291-
Vous êtes sur le point de supprimer le rattachement de{" "}
292-
{selectedUserData?.email} à l'agence "{agency.name}".
293-
</p>
294-
<p>Souhaitez-vous continuer ?</p>
295-
<ButtonsGroup
296-
inlineLayoutWhen="always"
297-
buttons={[
298-
{
299-
priority: "secondary",
300-
children: "Annuler",
301-
onClick: () => {
302-
removeUserModal.close();
303-
},
304-
},
305-
{
306-
id: domElementIds.admin.agencyTab
307-
.editAgencyRemoveUserConfirmationButton,
308-
priority: "primary",
309-
children: "Supprimer le rattachement",
310-
onClick: () => onUserRemoveSubmitted(),
311-
},
312-
]}
313-
/>
314-
</removeUserModal.Component>,
315-
document.body,
316-
)}
317241
</>
318242
);
319243
};

0 commit comments

Comments
 (0)