From ecd456829ced93804d9455bc83a73c89c1737427 Mon Sep 17 00:00:00 2001 From: Victor Jack <67293106+thedon-dev@users.noreply.github.com> Date: Fri, 14 Aug 2026 14:14:18 +0100 Subject: [PATCH] Coderabbit fix --- apps/api/src/__tests__/widget-payload.test.ts | 39 ------------------- .../features/course/components/card.svelte | 18 ++------- .../src/custom/course-card/course-card.svelte | 16 +------- 3 files changed, 4 insertions(+), 69 deletions(-) diff --git a/apps/api/src/__tests__/widget-payload.test.ts b/apps/api/src/__tests__/widget-payload.test.ts index b4055616..bdf68fdb 100644 --- a/apps/api/src/__tests__/widget-payload.test.ts +++ b/apps/api/src/__tests__/widget-payload.test.ts @@ -111,42 +111,3 @@ describe('getWidgetEmbedCode', () => { expect(embedCode).toMatch(/^]+><\/div>\n]+><\/script>$/); }); }); - -// describe('formatCourseForWidget price', () => { -// const baseCourse = { -// id: 'course-1', -// slug: 'my-course', -// title: 'My Course', -// description: 'A course', -// bannerImage: null, -// logo: null, -// isPublished: true, -// currency: 'USD', -// lessonCount: 10, -// exerciseCount: 5, -// type: 'PUBLIC', -// createdAt: new Date().toISOString() -// }; - -// function format(overrides: Record) { -// const course = { ...baseCourse, ...overrides } as Parameters[0]; -// return formatCourseForWidget(course, []); -// } - -// it('renders the price for a paid course', () => { -// expect(format({ cost: 100, metadata: { paymentEnabled: true } }).price).toBe('USD 100'); -// }); - -// it('renders the price when paymentEnabled is absent but the cost is positive', () => { -// expect(format({ cost: 100, metadata: {} }).price).toBe('USD 100'); -// }); - -// it('renders Free for a free course', () => { -// expect(format({ cost: 0, metadata: { paymentEnabled: false } }).price).toBe('Free'); -// expect(format({ cost: 0, metadata: {} }).price).toBe('Free'); -// }); - -// it('renders Free when a paid course has a zero cost (state blocked by API validation)', () => { -// expect(format({ cost: 0, metadata: { paymentEnabled: true } }).price).toBe('Free'); -// }); -// }); diff --git a/apps/dashboard/src/lib/features/course/components/card.svelte b/apps/dashboard/src/lib/features/course/components/card.svelte index 88859e02..15ada2eb 100644 --- a/apps/dashboard/src/lib/features/course/components/card.svelte +++ b/apps/dashboard/src/lib/features/course/components/card.svelte @@ -142,8 +142,10 @@ let cost = $derived(calcCourseDiscount(pricingData.discount, pricingData.cost ?? 0, !!pricingData.showDiscount)); + const isExploreClickable = $derived(!!(isLMS && isExplore && onExploreClick)); + let courseUrl = $derived.by(() => { - if (onExploreClick && isLMS && isExplore) { + if (isExploreClickable) { return undefined; } @@ -166,8 +168,6 @@ return `/courses/${id}${isLMS ? '/lessons?next=true' : ''}`; }); - const isExploreClickable = $derived(!!(isExplore && onExploreClick)); - const typeBadge = $derived( type && COURSE_TAG[type] ? { @@ -223,23 +223,11 @@ dateStyle: 'medium' }).format(date); } - - function handleExploreCardKeydown(event: KeyboardEvent) { - if (event.repeat || event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) { - return; - } - - event.preventDefault(); - onExploreClick?.(); - } void; - /** Keyboard handler for the card wrapper when it acts as a clickable region */ - onkeydown?: (event: KeyboardEvent) => void; - role?: string; - tabindex?: number; /** Custom banner area (e.g. optimized `Image`); overrides `bannerImage` */ media?: Snippet; /** Optional overlay inside the link (e.g. dropdown), typically absolutely positioned */ @@ -49,9 +45,6 @@ visibilityBadge, class: className = '', onclick, - onkeydown, - role, - tabindex, media, overlay, tags, @@ -61,14 +54,7 @@ const resolvedBannerImage = $derived(bannerImage?.trim() ? bannerImage : DEFAULT_COURSE_BANNER_IMAGE); - + {#snippet child({ props })} {#if href}