Skip to content

Commit

Permalink
Make fetcher flow more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
bdmendes committed Feb 7, 2024
1 parent 3f1eb45 commit 5d84025
Showing 1 changed file with 24 additions and 17 deletions.
41 changes: 24 additions & 17 deletions uni/lib/model/providers/startup/profile_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,20 @@ class ProfileProvider extends StateProviderNotifier<Profile> {

@override
Future<Profile> loadFromStorage(StateProviders stateProviders) async {
final profile = await loadProfile();
final databaseFutures = await Future.wait([
loadProfile(),
loadCourses(),
loadCourseUnits(),
]);

final profile = databaseFutures[0] as Profile;
final courses = databaseFutures[1] as List<Course>;
final courseUnits = databaseFutures[2] as List<CourseUnit>;

profile
..courses = await loadCourses()
..courseUnits = await loadCourseUnits();
..courses = courses
..courseUnits = courseUnits;

return profile;
}

Expand All @@ -40,24 +50,25 @@ class ProfileProvider extends StateProviderNotifier<Profile> {

final profileFuture = fetchUserInfo(session);
final courseUnitsFutures = profileFuture.then(
(profile) => fetchCourseUnitsAndCourseAverages(session, profile!),
(profile) => fetchCourseUnitsAndCourseAverages(session, profile!),
);

final futures = await Future.wait([
profileFuture,
courseUnitsFutures,
fetchUserFeesBalanceAndLimit(session),
fetchUserPrintBalance(session),
]);
final profile = futures[0] as Profile?;
final userBalanceAndFeesLimit = futures[1]! as Tuple2<String, DateTime?>;
final printBalance = futures[2]! as String;
final courseUnits = futures[1] as List<CourseUnit>?;
final userBalanceAndFeesLimit = futures[2]! as Tuple2<String, DateTime?>;
final printBalance = futures[3]! as String;

profile!
..feesBalance = userBalanceAndFeesLimit.item1
..feesLimit = userBalanceAndFeesLimit.item2
..printBalance = printBalance;

final courseUnits = await courseUnitsFutures;
if (courseUnits != null) {
profile.courseUnits = courseUnits;
}
Expand All @@ -81,8 +92,7 @@ class ProfileProvider extends StateProviderNotifier<Profile> {
}

Future<Tuple2<String, DateTime?>> fetchUserFeesBalanceAndLimit(
Session session,
) async {
Session session,) async {
final response = await FeesFetcher().getUserFeesResponse(session);

final feesBalance = parseFeesBalance(response);
Expand Down Expand Up @@ -118,7 +128,7 @@ class ProfileProvider extends StateProviderNotifier<Profile> {
}

final currentCourseUnits =
await CurrentCourseUnitsFetcher().getCurrentCourseUnits(session);
await CurrentCourseUnitsFetcher().getCurrentCourseUnits(session);

profile.courseUnits = currentCourseUnits;

Expand All @@ -132,12 +142,10 @@ class ProfileProvider extends StateProviderNotifier<Profile> {
return profile;
}

Future<List<CourseUnit>?> fetchCourseUnitsAndCourseAverages(
Session session,
Profile profile,
) async {
Future<List<CourseUnit>?> fetchCourseUnitsAndCourseAverages(Session session,
Profile profile,) async {
final allCourseUnits =
await AllCourseUnitsFetcher().getAllCourseUnitsAndCourseAverages(
await AllCourseUnitsFetcher().getAllCourseUnitsAndCourseAverages(
profile.courses,
session,
currentCourseUnits: profile.courseUnits,
Expand All @@ -159,8 +167,7 @@ class ProfileProvider extends StateProviderNotifier<Profile> {
return allCourseUnits;
}

static Future<File?> fetchOrGetCachedProfilePicture(
Session session, {
static Future<File?> fetchOrGetCachedProfilePicture(Session session, {
bool forceRetrieval = false,
int? studentNumber,
}) {
Expand Down

0 comments on commit 5d84025

Please sign in to comment.