Skip to content

Commit bde08f5

Browse files
authored
fix: split captcha client and correct tomorrow schedule (#153)
1 parent 89776d3 commit bde08f5

19 files changed

Lines changed: 388 additions & 361 deletions

lib/controller/classtable_controller.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ class ClassTableController {
256256

257257
List<HomeArrangement> getArrangementOfDay(DateTime updateTime) {
258258
final formatter = DateFormat(HomeArrangement.format);
259-
final currentWeek = currentWeekComputedSignal.value;
259+
final currentWeek = getCurrentWeek(updateTime);
260260
final classTableData = classTableComputedSignal.value;
261261
final arrangementSet = <HomeArrangement>{};
262262

lib/page/homepage/home.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import 'package:watermeter/repository/preference.dart';
2626
import 'package:watermeter/repository/xidian_ids/ids_session.dart';
2727
import 'package:ming_cute_icons/ming_cute_icons.dart';
2828
import 'package:watermeter/page/login/jc_captcha.dart';
29+
import 'package:watermeter/repository/xidian_ids/slider_captcha_client.dart';
2930
import 'package:watermeter/repository/preference.dart' as preference;
3031

3132
class PageInformation {
@@ -87,7 +88,10 @@ class _HomePageMasterState extends State<HomePageMaster>
8788
context: context,
8889
forceRetryLogin: true,
8990
sliderCaptcha: (String cookieStr) {
90-
return SliderCaptchaClientProvider(cookie: cookieStr).solve(context);
91+
return SliderCaptchaClientProvider(cookie: cookieStr).solve(
92+
manualSolver: (provider) =>
93+
solveSliderCaptchaManually(context, provider),
94+
);
9195
},
9296
);
9397
} finally {
@@ -204,9 +208,10 @@ class _HomePageMasterState extends State<HomePageMaster>
204208
context: context,
205209
forceRetryLogin: true,
206210
sliderCaptcha: (String cookieStr) {
207-
return SliderCaptchaClientProvider(
208-
cookie: cookieStr,
209-
).solve(context);
211+
return SliderCaptchaClientProvider(cookie: cookieStr).solve(
212+
manualSolver: (provider) =>
213+
solveSliderCaptchaManually(context, provider),
214+
);
210215
},
211216
);
212217
}

lib/page/homepage/homepage.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import 'package:watermeter/page/homepage/refresh.dart';
1616
import 'package:watermeter/repository/notification/course_reminder_service.dart';
1717
import 'package:watermeter/repository/logger.dart';
1818
import 'package:watermeter/page/login/jc_captcha.dart';
19+
import 'package:watermeter/repository/xidian_ids/slider_captcha_client.dart';
1920

2021
class MainPage extends StatefulWidget {
2122
final Function()? changePage;
@@ -210,9 +211,10 @@ class _MainPageState extends State<MainPage> with TickerProviderStateMixin {
210211
await update(
211212
context: context,
212213
sliderCaptcha: (String cookieStr) {
213-
return SliderCaptchaClientProvider(
214-
cookie: cookieStr,
215-
).solve(context);
214+
return SliderCaptchaClientProvider(cookie: cookieStr).solve(
215+
manualSolver: (provider) =>
216+
solveSliderCaptchaManually(context, provider),
217+
);
216218
},
217219
);
218220
if (context.mounted) {

lib/page/homepage/info_widget/classtable_card.dart

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ class _ClassTableCardState extends State<ClassTableCard> {
7070
controller.homepageArrangementStateComputedSignal.value;
7171
final arrangements = controller.arrangementComputedSignal.value;
7272
final isTomorrow = controller.isTomorrowComputedSignal.value;
73+
final updateTime = controller.updateTimeComputedSignal.value;
74+
final displayTime = isTomorrow
75+
? updateTime.add(const Duration(days: 1))
76+
: updateTime;
7377
final isAllSourcesLoading =
7478
controller.isAllSourcesLoadingComputedSignal.value;
7579
final isPartialSourcesLoading =
@@ -78,8 +82,9 @@ class _ClassTableCardState extends State<ClassTableCard> {
7882
final havePhysicsExperiment =
7983
controller.havePhysicsExperimentSignal.value;
8084
final isPostGraduate = controller.isPostGraduate;
81-
final currentWeek =
82-
classTableController.currentWeekComputedSignal.value;
85+
final currentWeek = classTableController.getCurrentWeek(
86+
displayTime,
87+
);
8388
final semesterLength = classTableController
8489
.classTableComputedSignal
8590
.value
@@ -98,6 +103,7 @@ class _ClassTableCardState extends State<ClassTableCard> {
98103
isTomorrow: isTomorrow,
99104
emptyInfoText: _getEmptyInfoText(arrangementState),
100105
arrangementState: arrangementState,
106+
displayTime: displayTime,
101107
currentWeek: currentWeek,
102108
semesterLength: semesterLength,
103109
),
@@ -121,6 +127,7 @@ class _ClassArrangementListView extends StatelessWidget {
121127
final bool isTomorrow;
122128
final String emptyInfoText;
123129
final ArrangementState arrangementState;
130+
final DateTime displayTime;
124131
final int currentWeek;
125132
final int semesterLength;
126133

@@ -129,6 +136,7 @@ class _ClassArrangementListView extends StatelessWidget {
129136
required this.isTomorrow,
130137
required this.emptyInfoText,
131138
required this.arrangementState,
139+
required this.displayTime,
132140
required this.currentWeek,
133141
required this.semesterLength,
134142
});
@@ -196,12 +204,12 @@ class _ClassArrangementListView extends StatelessWidget {
196204
String timeString = DateFormat(
197205
"MMMd",
198206
FlutterI18n.currentLocale(context).toString(),
199-
).format(DateTime.now());
207+
).format(displayTime);
200208

201209
String weekString = DateFormat(
202210
"E",
203211
FlutterI18n.currentLocale(context).toString(),
204-
).format(DateTime.now());
212+
).format(displayTime);
205213

206214
String weekInfo =
207215
currentWeek >= 0 && currentWeek < semesterLength

0 commit comments

Comments
 (0)