* Remove icons folder * Create folders for badge, button, and dropdown components * Remove Bootstrap 5 from test * Rename `getBootstrap5Breakpoint` to `getBootstrapBreakpoint` * Cleanup and update BS 5 comments * Move components to the shared folder * Rename `tooltips-bs5` to `tooltip` * Remove `-bs5` suffix * Fix path * Delete BS3 version file * Rename `_form_marketing-bootstrap-5` to `_form_marketing` * Delete BS3 version file * Rename `_contact_general_modal-marketing-bootstrap-5` to `_contact_general_modal-marketing` * Delete BS3 version file * Rename `_contact_modal-marketing-bootstrap-5` to `_contact_modal-marketing` * Delete BS3 version file * Rename `thin-footer-bootstrap-5` to `thin-footer` * Delete BS3 version file * Rename `language-picker-bootstrap-5` to `language-picker` * Rename `fat-footer-react-bootstrap-5` to `fat-footer-react` * Delete BS3 version file * Rename `navbar-marketing-bootstrap-5` to `navbar-marketing` * Rename `navbar-marketing-react-bootstrap-5` to `navbar-marketing-react` * Delete BS3 version file * Rename `layout-website-redesign-cms-bootstrap-5` to `layout-website-redesign-cms` * Source format * Fix path GitOrigin-RevId: cf0f5db7c84cf545c69213dcc271d9ff17fe5db7
102 lines
3.0 KiB
TypeScript
102 lines
3.0 KiB
TypeScript
import { useState } from 'react'
|
|
import { UserEmailData } from '../../../../../../types/user-email'
|
|
import getMeta from '../../../../utils/meta'
|
|
import ReconfirmationInfoSuccess from './reconfirmation-info/reconfirmation-info-success'
|
|
import ReconfirmationInfoPromptText from './reconfirmation-info/reconfirmation-info-prompt-text'
|
|
import OLRow from '@/shared/components/ol/ol-row'
|
|
import OLCol from '@/shared/components/ol/ol-col'
|
|
import OLNotification from '@/shared/components/ol/ol-notification'
|
|
import { useUserEmailsContext } from '@/features/settings/context/user-email-context'
|
|
import { ssoAvailableForInstitution } from '@/features/settings/utils/sso'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { useLocation } from '@/shared/hooks/use-location'
|
|
import OLButton from '@/shared/components/ol/ol-button'
|
|
import ResendConfirmationCodeModal from '@/features/settings/components/emails/resend-confirmation-code-modal'
|
|
|
|
type ReconfirmationInfoProps = {
|
|
userEmailData: UserEmailData
|
|
}
|
|
|
|
function ReconfirmationInfo({ userEmailData }: ReconfirmationInfoProps) {
|
|
const reconfirmedViaSAML = getMeta('ol-reconfirmedViaSAML')
|
|
const affiliation = userEmailData.affiliation
|
|
const { t } = useTranslation()
|
|
const { samlInitPath } = getMeta('ol-ExposedSettings')
|
|
const {
|
|
state,
|
|
setLoading: setUserEmailsContextLoading,
|
|
getEmails,
|
|
} = useUserEmailsContext()
|
|
const [isPending, setIsPending] = useState(false)
|
|
const location = useLocation()
|
|
const ssoAvailable = Boolean(
|
|
ssoAvailableForInstitution(affiliation?.institution ?? null)
|
|
)
|
|
|
|
if (!affiliation) {
|
|
return null
|
|
}
|
|
|
|
if (
|
|
userEmailData.samlProviderId &&
|
|
userEmailData.samlProviderId === reconfirmedViaSAML
|
|
) {
|
|
return (
|
|
<OLRow>
|
|
<OLCol lg={12}>
|
|
<OLNotification
|
|
type="info"
|
|
content={
|
|
<ReconfirmationInfoSuccess
|
|
institution={affiliation.institution}
|
|
/>
|
|
}
|
|
/>
|
|
</OLCol>
|
|
</OLRow>
|
|
)
|
|
}
|
|
|
|
if (!affiliation.inReconfirmNotificationPeriod) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<OLNotification
|
|
type="info"
|
|
content={
|
|
<ReconfirmationInfoPromptText
|
|
institutionName={affiliation.institution.name}
|
|
primary={userEmailData.default}
|
|
/>
|
|
}
|
|
action={
|
|
affiliation?.institution && ssoAvailable ? (
|
|
<OLButton
|
|
variant="secondary"
|
|
disabled={isPending}
|
|
onClick={() => {
|
|
setIsPending(true)
|
|
location.assign(
|
|
`${samlInitPath}?university_id=${affiliation.institution.id}&reconfirm=/user/settings`
|
|
)
|
|
}}
|
|
>
|
|
{t('confirm_affiliation')}
|
|
</OLButton>
|
|
) : (
|
|
<ResendConfirmationCodeModal
|
|
email={userEmailData.email}
|
|
setGroupLoading={setUserEmailsContextLoading}
|
|
groupLoading={state.isLoading}
|
|
onSuccess={getEmails}
|
|
triggerVariant="secondary"
|
|
/>
|
|
)
|
|
}
|
|
/>
|
|
)
|
|
}
|
|
|
|
export default ReconfirmationInfo
|