From d4b5d6d059add013a23b7232e453de05d1cc7e24 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:02:29 -0400 Subject: [PATCH] fix: filter courses only by short lang code (#4350) * fix: filter courses only by short lang code * Update lib/pangea/course_creation/course_search_provider.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update lib/pangea/login/pages/public_trip_page.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: always call setState on update target language filter --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- lib/pangea/course_creation/course_search_provider.dart | 5 +++-- lib/pangea/course_plans/courses/course_filter.dart | 4 ++-- lib/pangea/login/pages/public_trip_page.dart | 10 +++++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/pangea/course_creation/course_search_provider.dart b/lib/pangea/course_creation/course_search_provider.dart index c2c9636b7..0d688d751 100644 --- a/lib/pangea/course_creation/course_search_provider.dart +++ b/lib/pangea/course_creation/course_search_provider.dart @@ -26,8 +26,9 @@ mixin CourseSearchProvider on State { ); } - void setTargetLanguageFilter(LanguageModel? language, {reload = true}) { - targetLanguageFilter = language; + void setTargetLanguageFilter(LanguageModel? language, {bool reload = true}) { + if (targetLanguageFilter?.langCodeShort == language?.langCodeShort) return; + setState(() => targetLanguageFilter = language); if (reload) _loadCourses(); } diff --git a/lib/pangea/course_plans/courses/course_filter.dart b/lib/pangea/course_plans/courses/course_filter.dart index b4f4aeb1f..e05445186 100644 --- a/lib/pangea/course_plans/courses/course_filter.dart +++ b/lib/pangea/course_plans/courses/course_filter.dart @@ -49,11 +49,11 @@ class CourseFilter { } if (languageOfInstructions != null) { where["l1"] = { - "equals": languageOfInstructions!.langCode, + "equals": languageOfInstructions!.langCodeShort, }; } if (targetLanguage != null) { - where["l2"] = {"equals": targetLanguage!.langCode}; + where["l2"] = {"equals": targetLanguage!.langCodeShort}; } } diff --git a/lib/pangea/login/pages/public_trip_page.dart b/lib/pangea/login/pages/public_trip_page.dart index 9d54fe19a..8b6c59cc5 100644 --- a/lib/pangea/login/pages/public_trip_page.dart +++ b/lib/pangea/login/pages/public_trip_page.dart @@ -52,8 +52,10 @@ class PublicTripPageState extends State { _loadCourses(); } - void setTargetLanguageFilter(LanguageModel? language) { + void setTargetLanguageFilter(LanguageModel? language, {bool reload = true}) { + if (targetLanguageFilter?.langCodeShort == language?.langCodeShort) return; setState(() => targetLanguageFilter = language); + if (reload) _loadCourses(); } List get filteredCourses { @@ -70,7 +72,8 @@ class PublicTripPageState extends State { (chunk) { final course = coursePlans[chunk.courseId]; if (course == null) return false; - return course.targetLanguageModel == targetLanguageFilter; + return course.targetLanguage.split('-').first == + targetLanguageFilter!.langCodeShort; }, ).toList(); } @@ -110,7 +113,8 @@ class PublicTripPageState extends State { try { final resp = await CoursePlansRepo.search( GetLocalizedCoursesRequest( - coursePlanIds: discoveredCourses.map((c) => c.courseId).toList(), + coursePlanIds: + discoveredCourses.map((c) => c.courseId).toSet().toList(), l1: MatrixState.pangeaController.languageController.activeL1Code()!, ), );