feat: improve trail performance and fix bugs

This commit is contained in:
swve 2023-07-04 10:53:17 +01:00
parent c5617cb47a
commit eb56cf4d29
2 changed files with 9 additions and 12 deletions

View file

@ -4,6 +4,7 @@ import { removeCourse } from '@services/courses/activity';
import { getCourseThumbnailMediaDirectory } from '@services/media/media'; import { getCourseThumbnailMediaDirectory } from '@services/media/media';
import { revalidateTags } from '@services/utils/ts/requests'; import { revalidateTags } from '@services/utils/ts/requests';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/navigation';
import { mutate } from 'swr'; import { mutate } from 'swr';
interface TrailCourseElementProps { interface TrailCourseElementProps {
@ -14,12 +15,14 @@ interface TrailCourseElementProps {
function TrailCourseElement(props: TrailCourseElementProps) { function TrailCourseElement(props: TrailCourseElementProps) {
const courseid = props.course.course_id.replace("course_", "") const courseid = props.course.course_id.replace("course_", "")
const course = props.course const course = props.course
const router = useRouter();
async function quitCourse(course_id: string) { async function quitCourse(course_id: string) {
// Close activity // Close activity
let activity = await removeCourse(course_id, props.orgslug); let activity = await removeCourse(course_id, props.orgslug);
// Mutate course // Mutate course
revalidateTags(['courses'], props.orgslug); revalidateTags(['courses'], props.orgslug);
router.refresh();
// Mutate // Mutate
mutate(`${getAPIUrl()}trail/org_slug/${props.orgslug}/trail`); mutate(`${getAPIUrl()}trail/org_slug/${props.orgslug}/trail`);

View file

@ -121,19 +121,13 @@ async def get_user_trail_with_orgslug(
if not trail: if not trail:
return Trail(masked=False, courses=[]) return Trail(masked=False, courses=[])
# Check if these courses still exist in the database course_ids = [course["course_id"] for course in trail["courses"]]
for course in trail["courses"]:
course_id = course["course_id"]
course_object = await courses_mongo.find_one(
{"course_id": course_id}, {"_id": 0}
)
print('checking course ' + course_id)
if not course_object:
print("Course not found " + course_id)
trail["courses"].remove(course)
continue
course["course_object"] = course_object live_courses = await courses_mongo.find({"course_id": {"$in": course_ids}}).to_list(
length=None
)
trail["courses"] = live_courses
for courses in trail["courses"]: for courses in trail["courses"]:
course_id = courses["course_id"] course_id = courses["course_id"]