diff --git a/lib/pangea/course_plans/course_topics/course_topic_model.dart b/lib/pangea/course_plans/course_topics/course_topic_model.dart index bfb1915c3..b48c8d923 100644 --- a/lib/pangea/course_plans/course_topics/course_topic_model.dart +++ b/lib/pangea/course_plans/course_topics/course_topic_model.dart @@ -35,7 +35,7 @@ class CourseTopicModel { uuids: locationIds, ), ); - Future fetchLocations() => CourseLocationRepo.get( + Future _fetchLocations() => CourseLocationRepo.get( CourseInfoBatchRequest( batchId: uuid, uuids: locationIds, @@ -65,7 +65,7 @@ class CourseTopicModel { Future> fetchLocationMedia() async { final allLocationMedia = []; - final locationResp = await fetchLocations(); + final locationResp = await _fetchLocations(); for (final location in locationResp.locations) { final mediaResp = await CourseLocationMediaRepo.get( CourseInfoBatchRequest( diff --git a/lib/pangea/course_plans/courses/course_plan_builder.dart b/lib/pangea/course_plans/courses/course_plan_builder.dart index 5d9594892..9f88c7faa 100644 --- a/lib/pangea/course_plans/courses/course_plan_builder.dart +++ b/lib/pangea/course_plans/courses/course_plan_builder.dart @@ -69,6 +69,7 @@ mixin CoursePlanProvider on State { course!.fetchTopics(), ]; await Future.wait(courseFutures); + await _loadTopicsMedia(); } catch (e) { topicError = e; } finally { @@ -76,6 +77,18 @@ mixin CoursePlanProvider on State { } } + Future _loadTopicsMedia() async { + final List futures = []; + if (course == null) return; + for (final topicId in course!.topicIds) { + final topic = course!.loadedTopics[topicId]; + if (topic != null) { + futures.add(topic.fetchLocationMedia()); + } + } + await Future.wait(futures); + } + Future loadActivity(String topicId) async { setState(() { activityErrors[topicId] = null; @@ -86,11 +99,7 @@ mixin CoursePlanProvider on State { if (topic == null) { throw Exception("Topic is null"); } - - final topicFutures = []; - topicFutures.add(topic.fetchActivities()); - topicFutures.add(topic.fetchLocationMedia()); - await Future.wait(topicFutures); + await topic.fetchActivities(); } catch (e) { activityErrors[topicId] = e; } finally {