getCourseTable method

Future<CourseTableData> getCourseTable({
  1. required User user,
  2. required Semester semester,
  3. bool refresh = false,
})

Gets the course schedule for a semester.

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

Use getCourseOffering for related data (teachers, classrooms, schedules).

Implementation

Future<CourseTableData> getCourseTable({
  required User user,
  required Semester semester,
  bool refresh = false,
}) async {
  final cached = await _buildCourseTableData(semester.id);

  return fetchWithTtl(
    cached: cached.isEmpty ? null : cached,
    getFetchedAt: (_) => semester.courseTableFetchedAt,
    fetchFromNetwork: () => _fetchCourseTableFromNetwork(user, semester),
    refresh: refresh,
  );
}