diff --git a/src/contact-email-address.ts b/src/contact-email-address.ts index 742aa33d0..ce885f7cd 100644 --- a/src/contact-email-address.ts +++ b/src/contact-email-address.ts @@ -1,4 +1,5 @@ import * as RTE from 'fp-ts/ReaderTaskEither' +import type { Refinement } from 'fp-ts/Refinement' import type * as TE from 'fp-ts/TaskEither' import { flow, pipe } from 'fp-ts/function' import * as C from 'io-ts/Codec' @@ -88,3 +89,7 @@ export const saveContactEmailAddress = ( RTE.asksReaderTaskEither( RTE.fromTaskEitherK(({ saveContactEmailAddress }) => saveContactEmailAddress(orcid, emailAddress)), ) + +export const isUnverified: Refinement = ( + emailAddress: ContactEmailAddress, +): emailAddress is UnverifiedContactEmailAddress => emailAddress.type === 'unverified' diff --git a/src/my-details-page/verify-contact-email-address.ts b/src/my-details-page/verify-contact-email-address.ts index d9b0308b9..5f42b39f1 100644 --- a/src/my-details-page/verify-contact-email-address.ts +++ b/src/my-details-page/verify-contact-email-address.ts @@ -5,7 +5,7 @@ import { type ResponseEnded, Status, type StatusOpen } from 'hyper-ts' import type { OAuthEnv } from 'hyper-ts-oauth' import * as RM from 'hyper-ts/ReaderMiddleware' import { P, match } from 'ts-pattern' -import { getContactEmailAddress, saveContactEmailAddress } from '../contact-email-address' +import { getContactEmailAddress, isUnverified, saveContactEmailAddress } from '../contact-email-address' import { canChangeContactEmailAddress } from '../feature-flags' import { setFlashMessage } from '../flash-message' import { logInAndRedirect } from '../log-in' @@ -36,10 +36,7 @@ export const verifyContactEmailAddress = (verify: EmailAddress) => 'contactEmailAddress', flow( RM.fromReaderTaskEitherK(({ user }) => getContactEmailAddress(user.orcid)), - RM.filterOrElseW( - contactEmailAddress => contactEmailAddress.type === 'unverified', - () => 'already-verified' as const, - ), + RM.filterOrElseW(isUnverified, () => 'already-verified' as const), RM.filterOrElseW( contactEmailAddress => eqEmailAddress.equals(contactEmailAddress.value, verify), () => 'wrong-email-address' as const,