Skip to content

Commit

Permalink
Update fetchSheet to work with multiple endpoints (#1425)
Browse files Browse the repository at this point in the history
  • Loading branch information
Adriano-7 authored Jan 1, 2025
2 parents 83257f8 + 3cd50d8 commit 0db5271
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import 'package:html/parser.dart';
import 'package:http/http.dart';
import 'package:uni/controller/fetchers/session_dependant_fetcher.dart';
import 'package:uni/controller/networking/network_router.dart';
import 'package:uni/controller/parsers/parser_course_unit_info.dart';
import 'package:uni/model/entities/course_units/course_unit_class.dart';
import 'package:uni/model/entities/course_units/course_unit_directory.dart';
import 'package:uni/model/entities/course_units/course_unit_sheet.dart';
import 'package:uni/model/entities/course_units/sheet.dart';
import 'package:uni/session/flows/base/session.dart';

Expand All @@ -14,31 +14,39 @@ class CourseUnitsInfoFetcher implements SessionDependantFetcher {
return NetworkRouter.getBaseUrlsFromSession(session).toList();
}

Future<CourseUnitSheet> fetchCourseUnitSheet(
Session session,
int occurrId,
) async {
// if course unit is not from the main faculty, Sigarra redirects
final url = '${getEndpoints(session)[0]}ucurr_geral.ficha_uc_view';
final response = await NetworkRouter.getWithCookies(
url,
{'pv_ocorrencia_id': occurrId.toString()},
session,
);
return parseCourseUnitSheet(response);
}

Future<Sheet> fetchSheet(
Session session,
int occurId,
) async {
final url = '${getEndpoints(session)[0]}mob_ucurr_geral.perfil';
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,
).catchError((_) => Response('', 500)),
),
);
return parseSheet(response);

final bestResponse = responses
.where((response) => response.statusCode == 200)
.fold<Response?>(
null,
(best, current) =>
current.body.length > (best?.body.length ?? 0) ? current : best,
);

return bestResponse != null
? parseSheet(bestResponse)
: Sheet(
professors: [],
regents: [],
content: '',
evaluation: '',
books: [],
);
}

Future<List<CourseUnitFileDirectory>> fetchCourseUnitFiles(
Expand Down
2 changes: 1 addition & 1 deletion packages/uni_ui/lib/timeline/timeline.dart
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ class _TimelineState extends State<Timeline> {
child: ScrollablePositionedList.builder(
itemCount: widget.content.length,
itemScrollController: _itemScrollController,
itemPositionsListener: _itemPositionsListener,
itemPositionsListener: _itemPositionsListener,
itemBuilder: (context, index) {
return widget.content[index];
},
Expand Down

0 comments on commit 0db5271

Please sign in to comment.