diff --git a/src/components/course/CoursePage.jsx b/src/components/course/CoursePage.jsx index 92c77ca79b..5ecbdab57e 100644 --- a/src/components/course/CoursePage.jsx +++ b/src/components/course/CoursePage.jsx @@ -182,7 +182,7 @@ const CoursePage = () => { ], ); - const courseListPrice = subsidyAccessPolicyRedeemabilityData?.coursePrice + const courseListPrice = subsidyAccessPolicyRedeemabilityData?.listPrice || courseState?.activeCourseRun?.firstEnrollablePaidSeatPrice || getEntitlementPrice(courseState?.course?.entitlements); diff --git a/src/components/course/data/hooks.jsx b/src/components/course/data/hooks.jsx index f00d095f64..56a4e8cbac 100644 --- a/src/components/course/data/hooks.jsx +++ b/src/components/course/data/hooks.jsx @@ -532,7 +532,9 @@ export function useUserHasSubsidyRequestForCourse(courseKey) { * isPolicyRedemptionEnabled, * redeemabilityPerContentKey, * redeemableSubsidyAccessPolicy, - * missingSubsidyAccessPolicyReason + * missingSubsidyAccessPolicyReason, + * hasSuccessfulRedemption, + * listPrice, * } */ const checkRedemptionEligibility = async ({ queryKey }) => { @@ -548,6 +550,7 @@ const checkRedemptionEligibility = async ({ queryKey }) => { const otherSubsidyAccessPolicy = transformedResponse.find( r => r.redeemableSubsidyAccessPolicy, )?.redeemableSubsidyAccessPolicy; + const listPrice = redeemabilityForActiveCourseRun?.listPrice?.usd; const hasSuccessfulRedemption = transformedResponse.some(r => r.hasSuccessfulRedemption); @@ -562,6 +565,7 @@ const checkRedemptionEligibility = async ({ queryKey }) => { redeemableSubsidyAccessPolicy, missingSubsidyAccessPolicyReason, hasSuccessfulRedemption, + listPrice, }; }; @@ -581,6 +585,9 @@ const checkRedemptionEligibility = async ({ queryKey }) => { * - `redeemableSubsidyAccessPolicy`: The redeemable subsidy access policy, if any. * - `redeemabilityPerContentKey`: An array of objects containing the redeemability status for each course run key. * - `missingSubsidyAccessPolicyReason`: The reason why the subsidy access policy is not redeemable, if any. + * - `hasSuccessfulRedemption`: Whether a successful redemption for the active course run + * already exists for the requesting user. + * - `listPrice`: The list price (as a float) to display for the course. */ export const useCheckSubsidyAccessPolicyRedeemability = ({ courseRunKeys = [], diff --git a/src/components/course/data/tests/hooks.test.jsx b/src/components/course/data/tests/hooks.test.jsx index f9b4ae2f60..c05ace0566 100644 --- a/src/components/course/data/tests/hooks.test.jsx +++ b/src/components/course/data/tests/hooks.test.jsx @@ -1002,6 +1002,7 @@ describe('useCheckSubsidyAccessPolicyRedeemability', () => { redeemabilityPerContentKey: mockCanRedeemData, redeemableSubsidyAccessPolicy: mockRedeemableSubsidyAccessPolicy, missingSubsidyAccessPolicyReason: undefined, + listPrice: mockCanRedeemForContentKey.list_price.usd, })); }); }); diff --git a/src/components/course/tests/constants.js b/src/components/course/tests/constants.js index 906066bbf2..13ba4c2113 100644 --- a/src/components/course/tests/constants.js +++ b/src/components/course/tests/constants.js @@ -153,6 +153,10 @@ export const mockCanRedeemForContentKey = { has_redeemed: false, redemptions: [], reasons: [], + list_price: { + usd: 99.0, + usd_cents: 9900, + }, }; export const mockCanRedeemData = [mockCanRedeemForContentKey]; export const mockSubscriptionLicense = {