getSemesterRecords method

Future<List<SemesterRecordData>> getSemesterRecords({
  1. bool refresh = false,
})

Gets aggregated academic records grouped by semester.

Returns cached data if fresh (within TTL). Set refresh to true to bypass TTL (pull-to-refresh).

Implementation

Future<List<SemesterRecordData>> getSemesterRecords({
  bool refresh = false,
}) async {
  final user = await _database.select(_database.users).getSingle();

  final cached = await _buildSemesterRecordData(user.id);

  return fetchWithTtl(
    cached: cached.isEmpty ? null : cached,
    getFetchedAt: (_) => user.scoreDataFetchedAt,
    fetchFromNetwork: () => _fetchSemesterRecordsFromNetwork(user.id),
    refresh: refresh,
  );
}