From 096567ecf6faca46525e8c9841c7940c663d26ef Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:30:55 -0400 Subject: [PATCH] 4354 room stuck indefinitely loading (#4357) * fix: stop loading course if course plan provider if courseId is null * don't allow padding of null string to loadCoursePlan --- .../courses/course_plan_builder.dart | 10 +++++++ .../course_settings/course_settings.dart | 26 +++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/pangea/course_plans/courses/course_plan_builder.dart b/lib/pangea/course_plans/courses/course_plan_builder.dart index 095bc4ff4..5d9594892 100644 --- a/lib/pangea/course_plans/courses/course_plan_builder.dart +++ b/lib/pangea/course_plans/courses/course_plan_builder.dart @@ -99,4 +99,14 @@ mixin CoursePlanProvider on State { } } } + + Future loadAllActivities() async { + if (course == null) return; + + final futures = []; + for (final topicId in course!.topicIds) { + futures.add(loadActivity(topicId)); + } + await Future.wait(futures); + } } diff --git a/lib/pangea/course_settings/course_settings.dart b/lib/pangea/course_settings/course_settings.dart index aad07bfea..e9abf6f84 100644 --- a/lib/pangea/course_settings/course_settings.dart +++ b/lib/pangea/course_settings/course_settings.dart @@ -42,34 +42,34 @@ class CourseSettingsState extends State void initState() { super.initState(); _loadSummaries(); - if (widget.room.coursePlan != null) { - _loadCourseInfo(); - } + _loadCourseInfo(); } @override void didUpdateWidget(covariant CourseSettings oldWidget) { super.didUpdateWidget(oldWidget); if (oldWidget.room.id != widget.room.id) { - if (widget.room.coursePlan != null) { - _loadCourseInfo(); - } + _loadCourseInfo(); } } Future _loadCourseInfo() async { + if (widget.room.coursePlan == null) { + setState(() { + course = null; + loadingCourse = false; + loadingTopics = false; + _loadingActivities = false; + }); + return; + } + setState(() => _loadingActivities = true); await loadCourse(widget.room.coursePlan!.uuid); if (course != null) { await loadTopics(); - - final futures = []; - for (final topicId in course!.topicIds) { - futures.add(loadActivity(topicId)); - } - await Future.wait(futures); + await loadAllActivities(); } - if (mounted) setState(() => _loadingActivities = false); }