chore: only show unlocalized language options in course search target language dropdowns (#4380)

This commit is contained in:
ggurdin 2025-10-14 13:46:34 -04:00 committed by GitHub
parent 0b40b1c7ea
commit ce38f515a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 41 additions and 19 deletions

View file

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pangea/course_creation/course_plan_filter_widget.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
import 'package:fluffychat/widgets/matrix.dart';
class CourseLanguageFilter extends StatelessWidget {
final LanguageModel? value;
final void Function(LanguageModel?) onChanged;
const CourseLanguageFilter({
super.key,
required this.value,
required this.onChanged,
});
@override
Widget build(BuildContext context) {
return CoursePlanFilter<LanguageModel>(
value: value,
onChanged: onChanged,
items:
MatrixState.pangeaController.pLanguageStore.unlocalizedTargetOptions,
displayname: (v) => v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName: L10n.of(context).targetLanguageLabel,
shortName: L10n.of(context).allLanguages,
);
}
}

View file

@ -21,6 +21,12 @@ class PLanguageStore {
List<LanguageModel> get targetOptions =>
_langList.where((element) => element.l2).toList();
List<LanguageModel> get unlocalizedTargetOptions => _langList
.where(
(element) => element.l2 && element.langCode == element.langCodeShort,
)
.toList();
List<LanguageModel> get baseOptions => _langList.toList();
static Future<void> initialize({forceRefresh = false}) async {

View file

@ -6,9 +6,8 @@ import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pangea/bot/widgets/bot_face_svg.dart';
import 'package:fluffychat/pangea/common/widgets/url_image_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_info_chip_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_plan_filter_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_language_filter.dart';
import 'package:fluffychat/pangea/course_creation/course_search_provider.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
import 'package:fluffychat/widgets/avatar.dart';
import 'package:fluffychat/widgets/matrix.dart';
@ -77,16 +76,9 @@ class NewTripPageState extends State<NewTripPage> with CourseSearchProvider {
runSpacing: 8.0,
alignment: WrapAlignment.start,
children: [
CoursePlanFilter<LanguageModel>(
CourseLanguageFilter(
value: targetLanguageFilter,
onChanged: setTargetLanguageFilter,
items: MatrixState.pangeaController.pLanguageStore
.targetOptions,
displayname: (v) =>
v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName: L10n.of(context).targetLanguageLabel,
shortName: L10n.of(context).allLanguages,
),
],
),

View file

@ -8,7 +8,7 @@ import 'package:fluffychat/pangea/bot/widgets/bot_face_svg.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/common/widgets/url_image_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_info_chip_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_plan_filter_widget.dart';
import 'package:fluffychat/pangea/course_creation/course_language_filter.dart';
import 'package:fluffychat/pangea/course_plans/courses/course_plan_model.dart';
import 'package:fluffychat/pangea/course_plans/courses/course_plans_repo.dart';
import 'package:fluffychat/pangea/course_plans/courses/get_localized_courses_request.dart';
@ -176,16 +176,9 @@ class PublicTripPageState extends State<PublicTripPage> {
runSpacing: 8.0,
alignment: WrapAlignment.start,
children: [
CoursePlanFilter<LanguageModel>(
CourseLanguageFilter(
value: targetLanguageFilter,
onChanged: setTargetLanguageFilter,
items: MatrixState.pangeaController.pLanguageStore
.targetOptions,
displayname: (v) =>
v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName: L10n.of(context).targetLanguageLabel,
shortName: L10n.of(context).allLanguages,
),
],
),