Skip to content

Commit

Permalink
Merge pull request #348 from claushaas/staging
Browse files Browse the repository at this point in the history
fix courses that show on courses list
  • Loading branch information
claushaas authored Aug 22, 2024
2 parents dc9f17b + 8c4eea8 commit e70c295
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
6 changes: 3 additions & 3 deletions app/routes/courses_.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ export const loader = defineLoader(async ({request}: LoaderFunctionArgs) => {
try {
const lessonActivityService = new LessonActivityService();

const userRoles = userSession.get('roles') as TUserRoles;
const {data: courses} = new CourseService().getAllFromCache(userRoles);
const userData = userSession.data as TypeUserSession;
const {data: courses} = new CourseService().getAllFromCache(userData);
const coursesActivity = typeof userSession.get('id') === 'string' ? courses.map(course => ({
[course.slug]: lessonActivityService.getCourseProgressForUser(course.slug, userSession.get('id') as string),
})) : undefined;
Expand All @@ -35,7 +35,7 @@ export const loader = defineLoader(async ({request}: LoaderFunctionArgs) => {
courses,
coursesActivity,
meta,
userData: userSession.data as TypeUserSession,
userData,
};
} catch (error) {
logger.logError(`Error loading courses: ${(error as Error).message}`);
Expand Down
22 changes: 16 additions & 6 deletions app/services/course.service.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,23 +101,33 @@ export class CourseService {
};
}

public getAllFromCache(userRoles: TUserRoles = []): TServiceReturn<TCourseDataForCache[]> {
const isAdmin = userRoles.includes('admin');

public getAllFromCache(user: TUser): TServiceReturn<TCourseDataForCache[]> {
const allCoursesKeys = CourseService.cache.keys().filter(key => key.startsWith('course:'));
logger.logDebug(`All courses keys: ${JSON.stringify(allCoursesKeys)}`);

const allCourses = allCoursesKeys.map(key => {
const course = JSON.parse(CourseService.cache.get(key) ?? '{}') as TCourseDataForCache;

const hasActiveSubscription = user.roles?.includes('admin') ?? course.delegateAuthTo.some(courseSlug => {
const subscription = CourseService.cache.get(`${courseSlug}:${user.id}`);

if (!subscription) {
return false;
}

const {expiresAt} = JSON.parse(subscription) as TSubscription;
return expiresAt >= new Date();
});

return {
...course,
content: isAdmin ? course.content : course.marketingContent,
videoSourceUrl: isAdmin ? course.videoSourceUrl : course.marketingVideoUrl,
content: hasActiveSubscription ? course.content : course.marketingContent,
videoSourceUrl: hasActiveSubscription ? course.videoSourceUrl : course.marketingVideoUrl,
hasActiveSubscription,
};
});

const filteredCourses = allCourses.filter(course => isAdmin || course.isPublished);
const filteredCourses = allCourses.filter(course => user.roles?.includes('admin') ?? (course.isPublished && course.hasActiveSubscription) ?? course.isSelling);

filteredCourses.sort((a, b) => {
if (!a.order && !b.order) {
Expand Down

0 comments on commit e70c295

Please sign in to comment.