chore: remove l1 and CERF course filters from start course and public courses pages, update styling of l2 dropdown (#4278)

This commit is contained in:
ggurdin 2025-10-08 10:51:38 -04:00 committed by GitHub
parent c13c2eb1f6
commit f56cefe55c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 5 additions and 109 deletions

View file

@ -46,26 +46,23 @@ class CoursePlanFilterState<T> extends State<CoursePlanFilter<T>> {
child: DropdownButton2<T>(
customButton: Container(
decoration: BoxDecoration(
border: Border.all(color: theme.colorScheme.onSurface),
borderRadius: BorderRadius.circular(12.0),
borderRadius: BorderRadius.circular(40.0),
color: theme.colorScheme.surfaceContainerHighest,
),
padding: const EdgeInsets.symmetric(
horizontal: 8.0,
vertical: 2.0,
horizontal: 16.0,
vertical: 12.0,
),
child: Row(
spacing: 4.0,
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
widget.value != null
? widget.displayname(widget.value as T)
: widget.defaultName,
style: theme.textTheme.labelMedium,
),
const Icon(
Icons.arrow_drop_down,
size: 12.0,
),
],
),
@ -90,9 +87,6 @@ class CoursePlanFilterState<T> extends State<CoursePlanFilter<T>> {
borderRadius: BorderRadius.circular(40),
),
),
dropdownStyleData: const DropdownStyleData(
width: 250,
),
dropdownSearchData: widget.enableSearch
? DropdownSearchData(
searchController: _searchController,

View file

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:fluffychat/pangea/course_plans/course_plan_model.dart';
import 'package:fluffychat/pangea/course_plans/course_plans_repo.dart';
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
mixin CourseSearchProvider<T extends StatefulWidget> on State<T> {
@ -10,9 +9,6 @@ mixin CourseSearchProvider<T extends StatefulWidget> on State<T> {
Object? error;
List<CoursePlanModel> courses = [];
LanguageLevelTypeEnum? languageLevelFilter;
LanguageModel? instructionLanguageFilter;
LanguageModel? targetLanguageFilter;
@override
@ -26,21 +22,9 @@ mixin CourseSearchProvider<T extends StatefulWidget> on State<T> {
CourseFilter get _filter {
return CourseFilter(
targetLanguage: targetLanguageFilter,
languageOfInstructions: instructionLanguageFilter,
cefrLevel: languageLevelFilter,
);
}
void setLanguageLevelFilter(LanguageLevelTypeEnum? level, {reload = true}) {
languageLevelFilter = level;
if (reload) _loadCourses();
}
void setInstructionLanguageFilter(LanguageModel? language, {reload = true}) {
instructionLanguageFilter = language;
if (reload) _loadCourses();
}
void setTargetLanguageFilter(LanguageModel? language, {reload = true}) {
targetLanguageFilter = language;
if (reload) _loadCourses();

View file

@ -8,7 +8,6 @@ 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_search_provider.dart';
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
import 'package:fluffychat/widgets/avatar.dart';
import 'package:fluffychat/widgets/matrix.dart';
@ -38,11 +37,6 @@ class NewTripPageState extends State<NewTripPage> with CourseSearchProvider {
if (target != null) {
setTargetLanguageFilter(target, reload: false);
}
final base = MatrixState.pangeaController.languageController.systemLanguage;
if (base != null) {
setInstructionLanguageFilter(base, reload: false);
}
}
@override
@ -82,18 +76,6 @@ class NewTripPageState extends State<NewTripPage> with CourseSearchProvider {
runSpacing: 8.0,
alignment: WrapAlignment.start,
children: [
CoursePlanFilter<LanguageModel>(
value: instructionLanguageFilter,
onChanged: setInstructionLanguageFilter,
items: MatrixState
.pangeaController.pLanguageStore.baseOptions,
displayname: (v) =>
v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName:
L10n.of(context).languageOfInstructionsLabel,
shortName: L10n.of(context).allLanguages,
),
CoursePlanFilter<LanguageModel>(
value: targetLanguageFilter,
onChanged: setTargetLanguageFilter,
@ -105,14 +87,6 @@ class NewTripPageState extends State<NewTripPage> with CourseSearchProvider {
defaultName: L10n.of(context).targetLanguageLabel,
shortName: L10n.of(context).allLanguages,
),
CoursePlanFilter<LanguageLevelTypeEnum>(
value: languageLevelFilter,
onChanged: setLanguageLevelFilter,
items: LanguageLevelTypeEnum.values,
displayname: (v) => v.string,
defaultName: L10n.of(context).cefrLevelLabel,
shortName: L10n.of(context).allCefrLevels,
),
],
),
),

View file

@ -11,7 +11,6 @@ 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_plans/course_plan_model.dart';
import 'package:fluffychat/pangea/course_plans/course_plans_repo.dart';
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
import 'package:fluffychat/pangea/spaces/utils/public_course_extension.dart';
import 'package:fluffychat/widgets/avatar.dart';
@ -34,8 +33,6 @@ class PublicTripPageState extends State<PublicTripPage> {
bool loading = true;
Object? error;
LanguageLevelTypeEnum? languageLevelFilter;
LanguageModel? instructionLanguageFilter;
LanguageModel? targetLanguageFilter;
List<PublicCoursesChunk> discoveredCourses = [];
@ -51,22 +48,9 @@ class PublicTripPageState extends State<PublicTripPage> {
setTargetLanguageFilter(target);
}
final base = MatrixState.pangeaController.languageController.systemLanguage;
if (base != null) {
setInstructionLanguageFilter(base);
}
_loadCourses();
}
void setLanguageLevelFilter(LanguageLevelTypeEnum? level) {
setState(() => languageLevelFilter = level);
}
void setInstructionLanguageFilter(LanguageModel? language) {
setState(() => instructionLanguageFilter = language);
}
void setTargetLanguageFilter(LanguageModel? language) {
setState(() => targetLanguageFilter = language);
}
@ -80,26 +64,6 @@ class PublicTripPageState extends State<PublicTripPage> {
)
.toList();
if (languageLevelFilter != null) {
filtered = filtered.where(
(chunk) {
final course = coursePlans[chunk.courseId];
if (course == null) return false;
return course.cefrLevel == languageLevelFilter;
},
).toList();
}
if (instructionLanguageFilter != null) {
filtered = filtered.where(
(chunk) {
final course = coursePlans[chunk.courseId];
if (course == null) return false;
return course.baseLanguageModel == instructionLanguageFilter;
},
).toList();
}
if (targetLanguageFilter != null) {
filtered = filtered.where(
(chunk) {
@ -199,18 +163,6 @@ class PublicTripPageState extends State<PublicTripPage> {
runSpacing: 8.0,
alignment: WrapAlignment.start,
children: [
CoursePlanFilter<LanguageModel>(
value: instructionLanguageFilter,
onChanged: setInstructionLanguageFilter,
items: MatrixState
.pangeaController.pLanguageStore.baseOptions,
displayname: (v) =>
v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName:
L10n.of(context).languageOfInstructionsLabel,
shortName: L10n.of(context).allLanguages,
),
CoursePlanFilter<LanguageModel>(
value: targetLanguageFilter,
onChanged: setTargetLanguageFilter,
@ -222,14 +174,6 @@ class PublicTripPageState extends State<PublicTripPage> {
defaultName: L10n.of(context).targetLanguageLabel,
shortName: L10n.of(context).allLanguages,
),
CoursePlanFilter<LanguageLevelTypeEnum>(
value: languageLevelFilter,
onChanged: setLanguageLevelFilter,
items: LanguageLevelTypeEnum.values,
displayname: (v) => v.string,
defaultName: L10n.of(context).cefrLevelLabel,
shortName: L10n.of(context).allCefrLevels,
),
],
),
),