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