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>
This commit is contained in:
ggurdin 2025-10-13 13:02:29 -04:00 committed by GitHub
parent ac32bd77ec
commit d4b5d6d059
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 7 deletions

View file

@ -26,8 +26,9 @@ mixin CourseSearchProvider<T extends StatefulWidget> on State<T> {
);
}
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();
}

View file

@ -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};
}
}

View file

@ -52,8 +52,10 @@ class PublicTripPageState extends State<PublicTripPage> {
_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<PublicCoursesChunk> get filteredCourses {
@ -70,7 +72,8 @@ class PublicTripPageState extends State<PublicTripPage> {
(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<PublicTripPage> {
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()!,
),
);