Merge pull request #17648 from overleaf/jel-member-list-alerts

[web] Rename managed user alert variables

GitOrigin-RevId: 6a6a446d7fda4ad0b4b63ef380d9710c2b545295
This commit is contained in:
Jessica Lawshe 2024-03-27 10:45:09 -05:00 committed by Copybot
parent 8b670f4378
commit b4b4fe7a1c
7 changed files with 83 additions and 94 deletions

View file

@ -11,7 +11,7 @@ import { User } from '../../../../../../types/group-management/user'
import useAsync from '@/shared/hooks/use-async'
import { type FetchError, postJSON } from '@/infrastructure/fetch-json'
import Icon from '@/shared/components/icon'
import { ManagedUserAlert } from '../../utils/types'
import { GroupUserAlert } from '../../utils/types'
import { useGroupMembersContext } from '../../context/group-members-context'
import getMeta from '@/utils/meta'
@ -23,14 +23,14 @@ type ManagedUserDropdownButtonProps = {
user: User
openOffboardingModalForUser: (user: User) => void
groupId: string
setManagedUserAlert: Dispatch<SetStateAction<ManagedUserAlert>>
setGroupUserAlert: Dispatch<SetStateAction<GroupUserAlert>>
}
export default function DropdownButton({
user,
openOffboardingModalForUser,
groupId,
setManagedUserAlert,
setGroupUserAlert,
}: ManagedUserDropdownButtonProps) {
const { t } = useTranslation()
const { removeMember } = useGroupMembersContext()
@ -66,7 +66,7 @@ export default function DropdownButton({
)
if (result.success) {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendManagedUserInviteSuccess',
email: user.email,
})
@ -74,12 +74,12 @@ export default function DropdownButton({
}
} catch (err) {
if ((err as FetchError)?.response?.status === 429) {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendInviteTooManyRequests',
email: user.email,
})
} else {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendManagedUserInviteFailed',
email: user.email,
})
@ -88,7 +88,7 @@ export default function DropdownButton({
setIsOpened(false)
}
},
[setManagedUserAlert, groupId, runResendManagedUserInviteAsync]
[setGroupUserAlert, groupId, runResendManagedUserInviteAsync]
)
const handleResendLinkSSOInviteAsync = useCallback(
@ -99,7 +99,7 @@ export default function DropdownButton({
)
if (result.success) {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendSSOLinkInviteSuccess',
email: user.email,
})
@ -107,12 +107,12 @@ export default function DropdownButton({
}
} catch (err) {
if ((err as FetchError)?.response?.status === 429) {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendInviteTooManyRequests',
email: user.email,
})
} else {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendSSOLinkInviteFailed',
email: user.email,
})
@ -121,7 +121,7 @@ export default function DropdownButton({
setIsOpened(false)
}
},
[setManagedUserAlert, groupId, runResendLinkSSOInviteAsync]
[setGroupUserAlert, groupId, runResendLinkSSOInviteAsync]
)
const handleResendGroupInvite = useCallback(
@ -135,19 +135,19 @@ export default function DropdownButton({
})
)
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendGroupInviteSuccess',
email: user.email,
})
setIsOpened(false)
} catch (err) {
if ((err as FetchError)?.response?.status === 429) {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendInviteTooManyRequests',
email: user.email,
})
} else {
setManagedUserAlert({
setGroupUserAlert({
variant: 'resendGroupInviteFailed',
email: user.email,
})
@ -156,7 +156,7 @@ export default function DropdownButton({
setIsOpened(false)
}
},
[setManagedUserAlert, groupId, runResendGroupInviteAsync]
[setGroupUserAlert, groupId, runResendGroupInviteAsync]
)
const onResendManagedUserInviteClick = () => {

View file

@ -1,87 +1,76 @@
import { type PropsWithChildren, useState } from 'react'
import { Alert, type AlertProps } from 'react-bootstrap'
import { Trans, useTranslation } from 'react-i18next'
import type { ManagedUserAlertVariant } from '../../utils/types'
import type { GroupUserAlertVariant } from '../../utils/types'
type ManagedUsersListAlertProps = {
variant: ManagedUserAlertVariant
invitedUserEmail?: string
type GroupUsersListAlertProps = {
variant: GroupUserAlertVariant
userEmail?: string
onDismiss: () => void
}
export default function ListAlert({
variant,
invitedUserEmail,
userEmail,
onDismiss,
}: ManagedUsersListAlertProps) {
}: GroupUsersListAlertProps) {
switch (variant) {
case 'resendManagedUserInviteSuccess':
return (
<ResendManagedUserInviteSuccess
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
userEmail={userEmail}
/>
)
case 'resendSSOLinkInviteSuccess':
return (
<ResendSSOLinkInviteSuccess
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
userEmail={userEmail}
/>
)
case 'resendManagedUserInviteFailed':
return (
<FailedToResendManagedInvite
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
userEmail={userEmail}
/>
)
case 'resendSSOLinkInviteFailed':
return (
<FailedToResendSSOLink
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
/>
<FailedToResendSSOLink onDismiss={onDismiss} userEmail={userEmail} />
)
case 'resendGroupInviteSuccess':
return (
<ResendGroupInviteSuccess
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
/>
<ResendGroupInviteSuccess onDismiss={onDismiss} userEmail={userEmail} />
)
case 'resendGroupInviteFailed':
return (
<FailedToResendGroupInvite
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
userEmail={userEmail}
/>
)
case 'resendInviteTooManyRequests':
return (
<TooManyRequests
onDismiss={onDismiss}
invitedUserEmail={invitedUserEmail}
/>
)
return <TooManyRequests onDismiss={onDismiss} userEmail={userEmail} />
}
}
type ManagedUsersListAlertComponentProps = {
type GroupUsersListAlertComponentProps = {
onDismiss: () => void
invitedUserEmail?: string
userEmail?: string
}
function ResendManagedUserInviteSuccess({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="success" onDismiss={onDismiss}>
<Trans
i18nKey="managed_user_invite_has_been_sent_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -96,14 +85,14 @@ function ResendManagedUserInviteSuccess({
function ResendSSOLinkInviteSuccess({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="success" onDismiss={onDismiss}>
<Trans
i18nKey="sso_link_invite_has_been_sent_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -118,14 +107,14 @@ function ResendSSOLinkInviteSuccess({
function FailedToResendManagedInvite({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="danger" onDismiss={onDismiss}>
<Trans
i18nKey="failed_to_send_managed_user_invite_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -139,14 +128,14 @@ function FailedToResendManagedInvite({
}
function FailedToResendSSOLink({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="danger" onDismiss={onDismiss}>
<Trans
i18nKey="failed_to_send_sso_link_invite_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -161,14 +150,14 @@ function FailedToResendSSOLink({
function ResendGroupInviteSuccess({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="success" onDismiss={onDismiss}>
<Trans
i18nKey="group_invite_has_been_sent_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -183,14 +172,14 @@ function ResendGroupInviteSuccess({
function FailedToResendGroupInvite({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="danger" onDismiss={onDismiss}>
<Trans
i18nKey="failed_to_send_group_invite_to_email"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}
@ -205,14 +194,14 @@ function FailedToResendGroupInvite({
function TooManyRequests({
onDismiss,
invitedUserEmail,
}: ManagedUsersListAlertComponentProps) {
userEmail,
}: GroupUsersListAlertComponentProps) {
return (
<AlertComponent bsStyle="danger" onDismiss={onDismiss}>
<Trans
i18nKey="an_email_has_already_been_sent_to"
values={{
email: invitedUserEmail,
email: userEmail,
}}
shouldUnescape
tOptions={{ interpolation: { escapeValue: true } }}

View file

@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'
import { User } from '../../../../../../types/group-management/user'
import Badge from '../../../../shared/components/badge'
import Tooltip from '../../../../shared/components/tooltip'
import type { ManagedUserAlert } from '../../utils/types'
import type { GroupUserAlert } from '../../utils/types'
import ManagedUserStatus from './managed-user-status'
import SSOStatus from './sso-status'
import DropdownButton from './dropdown-button'
@ -15,13 +15,13 @@ type ManagedUserRowProps = {
user: User
openOffboardingModalForUser: (user: User) => void
groupId: string
setManagedUserAlert: Dispatch<SetStateAction<ManagedUserAlert>>
setGroupUserAlert: Dispatch<SetStateAction<GroupUserAlert>>
}
export default function MemberRow({
user,
openOffboardingModalForUser,
setManagedUserAlert,
setGroupUserAlert,
groupId,
}: ManagedUserRowProps) {
const { t } = useTranslation()
@ -95,7 +95,7 @@ export default function MemberRow({
<DropdownButton
user={user}
openOffboardingModalForUser={openOffboardingModalForUser}
setManagedUserAlert={setManagedUserAlert}
setGroupUserAlert={setGroupUserAlert}
groupId={groupId}
/>
</td>

View file

@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'
import { User } from '../../../../../../types/group-management/user'
import Tooltip from '@/shared/components/tooltip'
import { useGroupMembersContext } from '../../context/group-members-context'
import type { ManagedUserAlert } from '../../utils/types'
import type { GroupUserAlert } from '../../utils/types'
import MemberRow from './member-row'
import OffboardManagedUserModal from './offboard-managed-user-modal'
import ListAlert from './list-alert'
@ -21,19 +21,19 @@ export default function MembersList({ groupId }: ManagedUsersListProps) {
const [userToOffboard, setUserToOffboard] = useState<User | undefined>(
undefined
)
const [managedUserAlert, setManagedUserAlert] =
useState<ManagedUserAlert>(undefined)
const [groupUserAlert, setGroupUserAlert] =
useState<GroupUserAlert>(undefined)
const { users } = useGroupMembersContext()
const managedUsersActive: any = getMeta('ol-managedUsersActive')
const groupSSOActive = getMeta('ol-groupSSOActive')
return (
<div>
{managedUsersActive && managedUserAlert && (
{groupUserAlert && (
<ListAlert
variant={managedUserAlert.variant}
invitedUserEmail={managedUserAlert.email}
onDismiss={() => setManagedUserAlert(undefined)}
variant={groupUserAlert.variant}
userEmail={groupUserAlert.email}
onDismiss={() => setGroupUserAlert(undefined)}
/>
)}
<ul
@ -100,7 +100,7 @@ export default function MembersList({ groupId }: ManagedUsersListProps) {
key={user.email}
user={user}
openOffboardingModalForUser={setUserToOffboard}
setManagedUserAlert={setManagedUserAlert}
setGroupUserAlert={setGroupUserAlert}
groupId={groupId}
/>
))}

View file

@ -1,4 +1,4 @@
export type ManagedUserAlertVariant =
export type GroupUserAlertVariant =
| 'resendManagedUserInviteSuccess'
| 'resendManagedUserInviteFailed'
| 'resendGroupInviteSuccess'
@ -7,9 +7,9 @@ export type ManagedUserAlertVariant =
| 'resendSSOLinkInviteSuccess'
| 'resendSSOLinkInviteFailed'
export type ManagedUserAlert =
export type GroupUserAlert =
| {
variant: ManagedUserAlertVariant
variant: GroupUserAlertVariant
email?: string
}
| undefined

View file

@ -24,7 +24,7 @@ function mountDropDownComponent(user: User, subscriptionId: string) {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</Wrapper>
)

View file

@ -37,7 +37,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -88,7 +88,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -123,7 +123,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -158,7 +158,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -206,7 +206,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -256,7 +256,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -291,7 +291,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -326,7 +326,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -374,7 +374,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -426,7 +426,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -461,7 +461,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -496,7 +496,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -545,7 +545,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -597,7 +597,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -632,7 +632,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)
@ -667,7 +667,7 @@ describe('MemberRow', function () {
user={user}
openOffboardingModalForUser={sinon.stub()}
groupId={subscriptionId}
setManagedUserAlert={sinon.stub()}
setGroupUserAlert={sinon.stub()}
/>
</GroupMembersProvider>
)