From 56350a91eaccde3675c1900611c45e5a64c0a638 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 27 Jan 2026 14:34:20 -0500 Subject: [PATCH] chore: Search for course filter not saved when open new course page --- lib/config/routes.dart | 6 ++++-- lib/pangea/login/pages/find_course_page.dart | 13 +++++++++++-- lib/pangea/login/pages/new_course_page.dart | 14 ++++++++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/config/routes.dart b/lib/config/routes.dart index b8e3f1464..96300a979 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -365,11 +365,13 @@ abstract class AppRoutes { GoRoute( path: 'own', pageBuilder: (context, state) { - debugPrint("HELLLLO"); return defaultPageBuilder( context, state, - const NewCoursePage(route: 'rooms'), + NewCoursePage( + route: 'rooms', + initialLanguageCode: state.uri.queryParameters['lang'], + ), ); }, routes: [ diff --git a/lib/pangea/login/pages/find_course_page.dart b/lib/pangea/login/pages/find_course_page.dart index bcafa9a11..01dd38532 100644 --- a/lib/pangea/login/pages/find_course_page.dart +++ b/lib/pangea/login/pages/find_course_page.dart @@ -204,6 +204,15 @@ class FindCoursePageState extends State { } } + void startNewCourse() { + String route = "/rooms/course/own"; + if (targetLanguageFilter != null) { + route += + "?lang=${Uri.encodeComponent(targetLanguageFilter!.langCodeShort)}"; + } + context.go(route); + } + @override Widget build(BuildContext context) { return FindCoursePageView(controller: this); @@ -283,6 +292,7 @@ class FindCoursePageView extends StatelessWidget { ), if (constrained.maxWidth >= 500) ...[ TextButton( + onPressed: controller.startNewCourse, child: Row( spacing: 8.0, children: [ @@ -290,7 +300,6 @@ class FindCoursePageView extends StatelessWidget { Text(L10n.of(context).newCourse), ], ), - onPressed: () => context.go("/rooms/course/own"), ), TextButton( child: Row( @@ -307,7 +316,7 @@ class FindCoursePageView extends StatelessWidget { icon: const Icon(Icons.more_vert), itemBuilder: (context) => [ PopupMenuItem( - onTap: () => context.go("/rooms/course/own"), + onTap: controller.startNewCourse, child: Row( spacing: 8.0, children: [ diff --git a/lib/pangea/login/pages/new_course_page.dart b/lib/pangea/login/pages/new_course_page.dart index 65903c224..fd15070a6 100644 --- a/lib/pangea/login/pages/new_course_page.dart +++ b/lib/pangea/login/pages/new_course_page.dart @@ -17,6 +17,7 @@ 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_response.dart'; import 'package:fluffychat/pangea/languages/language_model.dart'; +import 'package:fluffychat/pangea/languages/p_language_store.dart'; import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; import 'package:fluffychat/widgets/avatar.dart'; @@ -27,12 +28,14 @@ class NewCoursePage extends StatefulWidget { final String route; final String? spaceId; final bool showFilters; + final String? initialLanguageCode; const NewCoursePage({ super.key, required this.route, this.spaceId, this.showFilters = true, + this.initialLanguageCode, }); @override @@ -50,8 +53,15 @@ class NewCoursePageState extends State { void initState() { super.initState(); - _targetLanguageFilter.value = - MatrixState.pangeaController.userController.userL2; + if (widget.initialLanguageCode != null) { + _targetLanguageFilter.value = + PLanguageStore.byLangCode(widget.initialLanguageCode!); + } + + if (_targetLanguageFilter.value == null) { + _targetLanguageFilter.value = + MatrixState.pangeaController.userController.userL2; + } _loadCourses(); }