From 59db8bb81e0315dfa1985937de61c3ef2eabc492 Mon Sep 17 00:00:00 2001 From: James Kachel Date: Thu, 4 Jan 2024 12:17:57 -0600 Subject: [PATCH 1/6] Instead of grabbing the first courserun off the list, grab the first enrollable one instead --- .../src/components/CourseProductDetailEnroll.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index 6b30494e25..e5cf68edd8 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -83,11 +83,26 @@ export class CourseProductDetailEnroll extends React.Component< destinationUrl: "" } + resolveFirstEnrollableRun() { + const { courseRuns } = this.props + + const enrollableRun = courseRuns.find((run: EnrollmentFlaggedCourseRun) => { + return ( + (run.enrollment_start === null || + moment(run.enrollment_start).isBefore(moment.now())) && + (run.enrollment_end === null || + moment(run.enrollment_end).isAfter(moment.now())) + ) + }) + + return enrollableRun + } + resolveCurrentRun() { const { courseRuns } = this.props return !this.getCurrentCourseRun() && courseRuns - ? courseRuns[0] + ? this.resolveFirstEnrollableRun() : this.getCurrentCourseRun() } From 335193c840699256a8fcd1ab0c9625470d38c47f Mon Sep 17 00:00:00 2001 From: James Kachel Date: Thu, 4 Jan 2024 12:26:42 -0600 Subject: [PATCH 2/6] Sort the courseruns by enrollment date so we grab the closest one --- .../components/CourseProductDetailEnroll.js | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index e5cf68edd8..b534c8eef5 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -86,14 +86,26 @@ export class CourseProductDetailEnroll extends React.Component< resolveFirstEnrollableRun() { const { courseRuns } = this.props - const enrollableRun = courseRuns.find((run: EnrollmentFlaggedCourseRun) => { - return ( - (run.enrollment_start === null || - moment(run.enrollment_start).isBefore(moment.now())) && - (run.enrollment_end === null || - moment(run.enrollment_end).isAfter(moment.now())) - ) - }) + const enrollableRun = courseRuns + .sort((a: EnrollmentFlaggedCourseRun, b: EnrollmentFlaggedCourseRun) => { + if (moment(a.enrollment_start).isBefore(moment(b.enrollment_start))) { + return -1 + } else if ( + moment(a.enrollment_start).isAfter(moment(b.enrollment_start)) + ) { + return 1 + } else { + return 0 + } + }) + .find((run: EnrollmentFlaggedCourseRun) => { + return ( + (run.enrollment_start === null || + moment(run.enrollment_start).isBefore(moment.now())) && + (run.enrollment_end === null || + moment(run.enrollment_end).isAfter(moment.now())) + ) + }) return enrollableRun } From ad073410bc7bdea6330fc5b76aedb4b8cf137ec2 Mon Sep 17 00:00:00 2001 From: James Kachel Date: Thu, 4 Jan 2024 12:39:19 -0600 Subject: [PATCH 3/6] flow fixing --- frontend/public/src/components/CourseProductDetailEnroll.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index b534c8eef5..d7b98a131b 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -86,7 +86,7 @@ export class CourseProductDetailEnroll extends React.Component< resolveFirstEnrollableRun() { const { courseRuns } = this.props - const enrollableRun = courseRuns + const enrollableRun = courseRuns && courseRuns .sort((a: EnrollmentFlaggedCourseRun, b: EnrollmentFlaggedCourseRun) => { if (moment(a.enrollment_start).isBefore(moment(b.enrollment_start))) { return -1 @@ -107,7 +107,7 @@ export class CourseProductDetailEnroll extends React.Component< ) }) - return enrollableRun + return enrollableRun || courseRuns[0] } resolveCurrentRun() { From 3864eef89d6ab6c572f5eacc08d1c8f2751d4a1b Mon Sep 17 00:00:00 2001 From: James Kachel Date: Thu, 4 Jan 2024 12:40:01 -0600 Subject: [PATCH 4/6] flow fixing --- frontend/public/src/components/CourseProductDetailEnroll.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index d7b98a131b..dd4703a4a9 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -107,7 +107,7 @@ export class CourseProductDetailEnroll extends React.Component< ) }) - return enrollableRun || courseRuns[0] + return enrollableRun || (courseRuns && courseRuns[0]) } resolveCurrentRun() { From bf0204d78cf156ff21544632d0abd00d42d1d651 Mon Sep 17 00:00:00 2001 From: James Kachel Date: Thu, 4 Jan 2024 12:41:13 -0600 Subject: [PATCH 5/6] flow fixing --- frontend/public/src/components/CourseProductDetailEnroll.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index dd4703a4a9..4ee6c187fa 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -362,7 +362,7 @@ export class CourseProductDetailEnroll extends React.Component< ) : [] - return product ? ( + return run && product ? ( showNewDesign ? ( Date: Thu, 4 Jan 2024 18:44:36 +0000 Subject: [PATCH 6/6] last round of flow fixes --- .../components/CourseProductDetailEnroll.js | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index 4ee6c187fa..36261668c8 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -86,26 +86,32 @@ export class CourseProductDetailEnroll extends React.Component< resolveFirstEnrollableRun() { const { courseRuns } = this.props - const enrollableRun = courseRuns && courseRuns - .sort((a: EnrollmentFlaggedCourseRun, b: EnrollmentFlaggedCourseRun) => { - if (moment(a.enrollment_start).isBefore(moment(b.enrollment_start))) { - return -1 - } else if ( - moment(a.enrollment_start).isAfter(moment(b.enrollment_start)) - ) { - return 1 - } else { - return 0 - } - }) - .find((run: EnrollmentFlaggedCourseRun) => { - return ( - (run.enrollment_start === null || - moment(run.enrollment_start).isBefore(moment.now())) && - (run.enrollment_end === null || - moment(run.enrollment_end).isAfter(moment.now())) + const enrollableRun = + courseRuns && + courseRuns + .sort( + (a: EnrollmentFlaggedCourseRun, b: EnrollmentFlaggedCourseRun) => { + if ( + moment(a.enrollment_start).isBefore(moment(b.enrollment_start)) + ) { + return -1 + } else if ( + moment(a.enrollment_start).isAfter(moment(b.enrollment_start)) + ) { + return 1 + } else { + return 0 + } + } ) - }) + .find((run: EnrollmentFlaggedCourseRun) => { + return ( + (run.enrollment_start === null || + moment(run.enrollment_start).isBefore(moment.now())) && + (run.enrollment_end === null || + moment(run.enrollment_end).isAfter(moment.now())) + ) + }) return enrollableRun || (courseRuns && courseRuns[0]) } @@ -340,8 +346,12 @@ export class CourseProductDetailEnroll extends React.Component< const run = this.resolveCurrentRun() const course = - courses && courses.find((elem: any) => elem.id === run.course.id) + courses && + courses.find( + (elem: any) => run && run.course && elem.id === run.course.id + ) const needFinancialAssistanceLink = + run && isFinancialAssistanceAvailable(run) && !run.approved_flexible_price_exists ? (

@@ -355,7 +365,7 @@ export class CourseProductDetailEnroll extends React.Component<

) : null const { upgradeEnrollmentDialogVisibility } = this.state - const product = run.products ? run.products[0] : null + const product = run && run.products ? run.products[0] : null const upgradableCourseRuns = courseRuns ? courseRuns.filter( (run: EnrollmentFlaggedCourseRun) => run.is_upgradable