@@ -248,20 +248,18 @@ class CourseRepository {
248248 /// DB is updated.
249249 ///
250250 /// Use [getCourseOffering] for related data (teachers, classrooms, schedules).
251- Stream <CourseTableData > watchCourseTable ({
252- required Semester semester,
253- }) async * {
251+ Stream <CourseTableData > watchCourseTable ({required int semesterId}) async * {
254252 const ttl = Duration (days: 3 );
255253
256254 final query = _database.select (_database.courseTableSlots)
257- ..where ((s) => s.semester.equals (semester.id ));
255+ ..where ((s) => s.semester.equals (semesterId ));
258256
259257 await for (final rows in query.watch ()) {
260258 final data = _buildCourseTableData (rows);
261259
262260 if (data.isEmpty) {
263261 try {
264- await refreshCourseTable (semester : semester );
262+ await refreshCourseTable (semesterId : semesterId );
265263 } catch (_) {
266264 // Absorb: yield empty below so UI exits loading state
267265 }
@@ -271,14 +269,15 @@ class CourseRepository {
271269
272270 final semesterRow = await (_database.select (
273271 _database.semesters,
274- )..where ((s) => s.id.equals (semester.id ))).getSingle ();
272+ )..where ((s) => s.id.equals (semesterId ))).getSingle ();
275273 final age = switch (semesterRow.courseTableFetchedAt) {
276274 final t? => DateTime .now ().difference (t),
277275 null => ttl,
278276 };
277+
279278 if (age >= ttl) {
280279 try {
281- await refreshCourseTable (semester : semester );
280+ await refreshCourseTable (semesterId : semesterId );
282281 } catch (_) {
283282 // Absorb: stale data is shown via stream
284283 }
@@ -290,10 +289,11 @@ class CourseRepository {
290289 ///
291290 /// The [watchCourseTable] stream automatically emits the updated value.
292291 /// Network errors propagate to the caller.
293- Future <void > refreshCourseTable ({
294- required Semester semester,
295- }) async {
292+ Future <void > refreshCourseTable ({required int semesterId}) async {
296293 final user = await _database.select (_database.users).getSingle ();
294+ final semester = await (_database.select (
295+ _database.semesters,
296+ )..where ((s) => s.id.equals (semesterId))).getSingle ();
297297
298298 final dtos = await _authRepository.withAuth (
299299 () => _courseService.getCourseTable (
0 commit comments