diff --git a/packages/uni_app/lib/controller/fetchers/course_units_fetcher/course_units_info_fetcher.dart b/packages/uni_app/lib/controller/fetchers/course_units_fetcher/course_units_info_fetcher.dart index e73b85368..880073d46 100644 --- a/packages/uni_app/lib/controller/fetchers/course_units_fetcher/course_units_info_fetcher.dart +++ b/packages/uni_app/lib/controller/fetchers/course_units_fetcher/course_units_info_fetcher.dart @@ -18,25 +18,23 @@ class CourseUnitsInfoFetcher implements SessionDependantFetcher { Session session, int occurId, ) async { - Response? bestResponse; - - for (final endpoint in getEndpoints(session)) { - final url = '$endpoint' 'mob_ucurr_geral.perfil'; - try { - final response = await NetworkRouter.getWithCookies( - url, - {'pv_ocorrencia_id': occurId.toString()}, - session, - ); + final responses = await Future.wait( + getEndpoints(session) + .map((endpoint) => '$endpoint' 'mob_ucurr_geral.perfil') + .map( + (url) => NetworkRouter.getWithCookies( + url, + {'pv_ocorrencia_id': occurId.toString()}, + session, + ), + ), + ); - if (bestResponse == null || - response.body.length > bestResponse.body.length) { - bestResponse = response; - } - } catch (_) { - continue; - } - } + final bestResponse = responses.fold( + null, + (best, current) => + current.body.length > (best?.body.length ?? 0) ? current : best, + ); return bestResponse != null ? parseSheet(bestResponse)