From f0e81a1102e95ffd7ecbfa41f135abc6d40b9953 Mon Sep 17 00:00:00 2001 From: Chris Wilkinson Date: Mon, 24 Oct 2022 11:38:23 +0100 Subject: [PATCH] Make error matching exhaustive Refs #388 --- src/write-review/write-review-add-author.ts | 8 ++++++-- src/write-review/write-review-change-author.ts | 10 +++++++--- src/write-review/write-review-remove-author.ts | 10 +++++++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/write-review/write-review-add-author.ts b/src/write-review/write-review-add-author.ts index 2734650c4..a108bb856 100644 --- a/src/write-review/write-review-add-author.ts +++ b/src/write-review/write-review-add-author.ts @@ -38,7 +38,7 @@ export const writeReviewAddAuthor = flow( ), RM.filterOrElseW( ({ canAddAuthors }) => canAddAuthors, - () => 'not-found', + () => 'not-found' as const, ), RM.bindW( 'form', @@ -53,8 +53,12 @@ export const writeReviewAddAuthor = flow( ), RM.orElseW(error => match(error) + .with( + 'no-session', + fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi }))), + ) .with('not-found', () => notFound) - .otherwise(fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi })))), + .exhaustive(), ), ), ), diff --git a/src/write-review/write-review-change-author.ts b/src/write-review/write-review-change-author.ts index 88eaaf5ba..5570732e0 100644 --- a/src/write-review/write-review-change-author.ts +++ b/src/write-review/write-review-change-author.ts @@ -36,7 +36,7 @@ export const writeReviewChangeAuthor = (doi: PreprintId['doi'], index: number) = ), RM.filterOrElseW( ({ canAddAuthors }) => canAddAuthors, - () => 'not-found', + () => 'not-found' as const, ), RM.bindW( 'form', @@ -44,7 +44,7 @@ export const writeReviewChangeAuthor = (doi: PreprintId['doi'], index: number) = ), RM.bindW( 'author', - fromOptionK(() => 'not-found')( + fromOptionK(() => 'not-found' as const)( flow( O.fromNullableK(({ form }) => form.otherAuthors), O.chain(RA.lookup(index)), @@ -61,8 +61,12 @@ export const writeReviewChangeAuthor = (doi: PreprintId['doi'], index: number) = ), RM.orElseW(error => match(error) + .with( + 'no-session', + fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi }))), + ) .with('not-found', () => notFound) - .otherwise(fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi })))), + .exhaustive(), ), ), ), diff --git a/src/write-review/write-review-remove-author.ts b/src/write-review/write-review-remove-author.ts index 0a7361846..6593049d2 100644 --- a/src/write-review/write-review-remove-author.ts +++ b/src/write-review/write-review-remove-author.ts @@ -40,7 +40,7 @@ export const writeReviewRemoveAuthor = (doi: PreprintId['doi'], index: number) = ), RM.filterOrElseW( ({ canAddAuthors }) => canAddAuthors, - () => 'not-found', + () => 'not-found' as const, ), RM.bindW( 'form', @@ -48,7 +48,7 @@ export const writeReviewRemoveAuthor = (doi: PreprintId['doi'], index: number) = ), RM.bindW( 'author', - fromOptionK(() => 'not-found')( + fromOptionK(() => 'not-found' as const)( flow( O.fromNullableK(({ form }) => form.otherAuthors), O.chain(RA.lookup(index)), @@ -65,8 +65,12 @@ export const writeReviewRemoveAuthor = (doi: PreprintId['doi'], index: number) = ), RM.orElseW(error => match(error) + .with( + 'no-session', + fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi }))), + ) .with('not-found', () => notFound) - .otherwise(fromMiddlewareK(() => seeOther(format(writeReviewMatch.formatter, { doi: preprint.doi })))), + .exhaustive(), ), ), ),