diff --git a/lib/pangea/login/pages/public_courses_page.dart b/lib/pangea/login/pages/public_courses_page.dart index 6ffd606c4..41a10a86a 100644 --- a/lib/pangea/login/pages/public_courses_page.dart +++ b/lib/pangea/login/pages/public_courses_page.dart @@ -53,10 +53,10 @@ class PublicCoursesPageState extends State { _loadCourses(); } - void setTargetLanguageFilter(LanguageModel? language, {bool reload = true}) { + void setTargetLanguageFilter(LanguageModel? language) { if (targetLanguageFilter?.langCodeShort == language?.langCodeShort) return; setState(() => targetLanguageFilter = language); - if (reload) _loadCourses(); + _loadCourses(); } List get filteredCourses { @@ -95,13 +95,8 @@ class PublicCoursesPageState extends State { return filtered; } - Future _loadCourses() async { + Future _loadPublicSpaces() async { try { - setState(() { - loading = true; - error = null; - }); - final resp = await Matrix.of(context).client.requestPublicCourses( since: nextBatch, ); @@ -123,6 +118,21 @@ class PublicCoursesPageState extends State { }, ); } + } + + Future _loadCourses() async { + setState(() { + loading = true; + error = null; + }); + + await _loadPublicSpaces(); + + int timesLoaded = 0; + while (error == null && timesLoaded < 5 && nextBatch != null) { + await _loadPublicSpaces(); + timesLoaded++; + } try { final resp = await CoursePlansRepo.search(