From 55ab9b67bd1e0aa7eecdd82e11eeb6f1f3189711 Mon Sep 17 00:00:00 2001 From: Pavlos Koutoglou Date: Fri, 31 Jan 2025 18:00:47 +0100 Subject: [PATCH] refactor: simplify role management logic and unify props interface in InviteModal components --- .../modals/invite-modal/invite-modal.tsx | 22 +------------------ .../organization-member-roles-selector.tsx | 15 +++---------- 2 files changed, 4 insertions(+), 33 deletions(-) diff --git a/packages/insomnia/src/ui/components/modals/invite-modal/invite-modal.tsx b/packages/insomnia/src/ui/components/modals/invite-modal/invite-modal.tsx index 1dfd40e3bd1..14e5f58c59a 100644 --- a/packages/insomnia/src/ui/components/modals/invite-modal/invite-modal.tsx +++ b/packages/insomnia/src/ui/components/modals/invite-modal/invite-modal.tsx @@ -375,7 +375,7 @@ const MemberListItem: FC<{ confirmMessage='Confirm' className="flex items-center gap-2 min-w-[85px] py-1 px-2 font-semibold aria-pressed:bg-[--hl-sm] text-[--color-font] transition-all text-sm" doneMessage={isFailed ? 'Failed' : isAcceptedMember || isGroup ? 'Removed' : 'Revoked'} - disabled={memberRoleName === 'owner' || (isCurrentUser && isAcceptedMember)} + disabled={memberRoleName === 'owner' || isCurrentUser} onClick={() => { if (!permissionRef.current['delete:membership']) { showAlert({ @@ -561,26 +561,6 @@ export const InviteModalContainer: FC<{ }; }; -enum ITEM_TYPE { - MEMBER, - INVITE, - GROUP -}; - -export interface PendingMember { - id: string; - inviter: { - name: string; - }; - invitee: { - email: string; - }; - created_at: string; - expires_at: string; - roles: string[]; - itemType: ITEM_TYPE.INVITE; -} - function checkPermissionRefType(permissionRef: MutableRefObject | undefined>): permissionRef is MutableRefObject> { return Boolean(permissionRef.current); } diff --git a/packages/insomnia/src/ui/components/modals/invite-modal/organization-member-roles-selector.tsx b/packages/insomnia/src/ui/components/modals/invite-modal/organization-member-roles-selector.tsx index 30b599f51a8..3a5dea2a3fb 100644 --- a/packages/insomnia/src/ui/components/modals/invite-modal/organization-member-roles-selector.tsx +++ b/packages/insomnia/src/ui/components/modals/invite-modal/organization-member-roles-selector.tsx @@ -66,8 +66,8 @@ export enum SELECTOR_TYPE { INVITE = 'invite', }; -interface PropsForUpdateRole { - type: SELECTOR_TYPE.UPDATE; +interface Props { + type: SELECTOR_TYPE.UPDATE | SELECTOR_TYPE.INVITE; availableRoles: Role[]; memberRoles: string[]; userRole: Role; @@ -79,16 +79,7 @@ interface PropsForUpdateRole { onRoleChange: (role: Role) => Promise; } -interface PropsForInvite { - type: SELECTOR_TYPE.INVITE; - availableRoles: Role[]; - memberRoles: string[]; - isDisabled?: boolean; - className?: string; - onRoleChange: (role: Role) => Promise; -} - -export const OrganizationMemberRolesSelector = (props: PropsForUpdateRole | PropsForInvite) => { +export const OrganizationMemberRolesSelector = (props: Props) => { const { type, availableRoles,