Skip to content

Commit ca30546

Browse files
authored
Merge pull request #677 from sseu-buhzzi/20260510/fix-missing-sem-start-date
fix: avoid setting `thisSemesterStartDate` when it is missing
2 parents 3adf8ff + 6c67568 commit ca30546

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

lib/page/subpage_timetable.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -683,8 +683,11 @@ class SemesterSelectionButtonState extends State<SemesterSelectionButton> {
683683
}
684684
SettingsProvider.getInstance().semesterStartDates =
685685
semesterBundle.startDates;
686-
SettingsProvider.getInstance().thisSemesterStartDate =
687-
semesterBundle.startDates.parseStartDate(chosenSemester);
686+
semesterBundle.startDates
687+
.parseStartDate(chosenSemester)
688+
?.apply(
689+
(sd) => SettingsProvider.getInstance().thisSemesterStartDate = sd,
690+
);
688691
}
689692

690693
@override

lib/provider/settings_provider.dart

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,11 @@ class SettingsProvider with ChangeNotifier {
179179
}
180180

181181
set timetableSemester(String? value) {
182-
preferences!.setString(KEY_TIMETABLE_SEMESTER, value!);
182+
if (value != null) {
183+
preferences!.setString(KEY_TIMETABLE_SEMESTER, value);
184+
} else {
185+
preferences!.remove(KEY_TIMETABLE_SEMESTER);
186+
}
183187
notifyListeners();
184188
}
185189

@@ -356,7 +360,11 @@ class SettingsProvider with ChangeNotifier {
356360
}
357361

358362
set thisSemesterStartDate(String? value) {
359-
preferences!.setString(KEY_THIS_SEMESTER_START_DATE, value!);
363+
if (value != null) {
364+
preferences!.setString(KEY_THIS_SEMESTER_START_DATE, value);
365+
} else {
366+
preferences!.remove(KEY_THIS_SEMESTER_START_DATE);
367+
}
360368
notifyListeners();
361369
}
362370

@@ -369,7 +377,11 @@ class SettingsProvider with ChangeNotifier {
369377
}
370378

371379
set semesterStartDates(SemesterStartDates? value) {
372-
preferences!.setString(KEY_SEMESTER_START_DATES, jsonEncode(value!));
380+
if (value != null) {
381+
preferences!.setString(KEY_SEMESTER_START_DATES, jsonEncode(value));
382+
} else {
383+
preferences!.remove(KEY_SEMESTER_START_DATES);
384+
}
373385
notifyListeners();
374386
}
375387

lib/repository/fdu/edu_service_repository.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ import 'package:flutter/widgets.dart';
2929
import 'neo_login_tool.dart';
3030

3131
class EduServiceRepository extends BaseRepositoryWithDio {
32-
static const String COURSE_TABLE_URL =
33-
'https://fdjwgl.fudan.edu.cn/student/for-std/course-table';
34-
3532
static String getSemesterCourseTableUrl(String semesterId) =>
3633
'https://fdjwgl.fudan.edu.cn/student/for-std/course-table/semester/$semesterId/print-data';
3734

0 commit comments

Comments
 (0)