fix(dashboard): redirect to course start after auto-enroll (#741)
* fix(dashboard): redirect to course start after auto-enroll After successful enrollment on the org-site enroll page, verified users were always sent to /lms because resolvePostEnrollRedirect was hardcoded. Restore the API redirectTo target (/courses/:id/lessons?next=true) so students land on their first lesson, with /course/:slug as fallback. Co-authored-by: Rotimi Best <[email protected]> * fix(dashboard): match LMS continue path after auto-enroll Use the same student course continue URL as the LMS home page (/courses/:id/lessons?next=true) via a shared helper, and navigate with goto instead of a hard reload or org-site /course/:slug fallback. Co-authored-by: Rotimi Best <[email protected]> --------- Co-authored-by: Rotimi Best <[email protected]>
This commit is contained in:
co-authored by
Rotimi Best
parent
8bed9f6b4e
commit
bce0f582ce
@@ -0,0 +1,3 @@
|
|||||||
|
export function getStudentCourseContinuePath(courseId: string): string {
|
||||||
|
return `/courses/${courseId}/lessons?next=true`;
|
||||||
|
}
|
||||||
@@ -13,10 +13,11 @@
|
|||||||
getStudentCourseComplianceStatusVariant,
|
getStudentCourseComplianceStatusVariant,
|
||||||
getStudentCourseProgressPercent
|
getStudentCourseProgressPercent
|
||||||
} from '$features/course/utils/compliance-utils';
|
} from '$features/course/utils/compliance-utils';
|
||||||
|
import { getStudentCourseContinuePath } from '$features/course/utils/student-course-navigation';
|
||||||
|
|
||||||
const gotoCourse = (id: string | undefined) => {
|
const gotoCourse = (id: string | undefined) => {
|
||||||
if (!id) return;
|
if (!id) return;
|
||||||
goto(`/courses/${id}/lessons?next=true`);
|
goto(getStudentCourseContinuePath(id));
|
||||||
};
|
};
|
||||||
|
|
||||||
let highlightedCourses = $derived.by(() => {
|
let highlightedCourses = $derived.by(() => {
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
getStudentCourseProgressPercent,
|
getStudentCourseProgressPercent,
|
||||||
isStudentCourseComplete
|
isStudentCourseComplete
|
||||||
} from '$features/course/utils/compliance-utils';
|
} from '$features/course/utils/compliance-utils';
|
||||||
|
import { getStudentCourseContinuePath } from '$features/course/utils/student-course-navigation';
|
||||||
|
|
||||||
type EnrolledCourse = (typeof coursesApi.enrolledCourses)[number];
|
type EnrolledCourse = (typeof coursesApi.enrolledCourses)[number];
|
||||||
|
|
||||||
@@ -147,7 +148,7 @@
|
|||||||
function gotoCourse(id: string | undefined) {
|
function gotoCourse(id: string | undefined) {
|
||||||
if (!id) return;
|
if (!id) return;
|
||||||
|
|
||||||
goto(`/courses/${id}/lessons?next=true`);
|
goto(getStudentCourseContinuePath(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
function gotoCourseCertificates(id: string | undefined) {
|
function gotoCourseCertificates(id: string | undefined) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
import { resolve } from '$app/paths';
|
import { resolve } from '$app/paths';
|
||||||
import { authClient } from '$lib/utils/services/auth/client';
|
import { authClient } from '$lib/utils/services/auth/client';
|
||||||
import { appInitApi } from '$features/app/init.svelte';
|
import { appInitApi } from '$features/app/init.svelte';
|
||||||
|
import { getStudentCourseContinuePath } from '$features/course/utils/student-course-navigation';
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
@@ -28,10 +29,6 @@
|
|||||||
const isLoggedIn = $derived(sessionReady && Boolean(sessionUser));
|
const isLoggedIn = $derived(sessionReady && Boolean(sessionUser));
|
||||||
const isEmailVerified = $derived(Boolean($profile.isEmailVerified || sessionUser?.emailVerified));
|
const isEmailVerified = $derived(Boolean($profile.isEmailVerified || sessionUser?.emailVerified));
|
||||||
|
|
||||||
function resolvePostEnrollRedirect(): string {
|
|
||||||
return '/lms';
|
|
||||||
}
|
|
||||||
|
|
||||||
async function sendVerificationEmail() {
|
async function sendVerificationEmail() {
|
||||||
const email = $profile.email || sessionUser?.email;
|
const email = $profile.email || sessionUser?.email;
|
||||||
if (!email) {
|
if (!email) {
|
||||||
@@ -141,7 +138,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
navigatingAway = true;
|
navigatingAway = true;
|
||||||
window.location.href = resolvePostEnrollRedirect();
|
await goto(resolve(getStudentCourseContinuePath(data.course.id), {}));
|
||||||
} finally {
|
} finally {
|
||||||
enrollmentInFlight = false;
|
enrollmentInFlight = false;
|
||||||
if (!navigatingAway) {
|
if (!navigatingAway) {
|
||||||
|
|||||||
Reference in New Issue
Block a user