50 lines
1.6 KiB
Dart
50 lines
1.6 KiB
Dart
import 'dart:convert';
|
|
|
|
import '../../../requestCache.dart';
|
|
import '../authenticate/authenticate.dart';
|
|
import 'getTimetable.dart';
|
|
import 'getTimetableParams.dart';
|
|
import 'getTimetableResponse.dart';
|
|
|
|
class GetTimetableCache extends RequestCache<GetTimetableResponse> {
|
|
int startdate;
|
|
int enddate;
|
|
|
|
GetTimetableCache({
|
|
required void Function(GetTimetableResponse) onUpdate,
|
|
void Function(Exception)? onError,
|
|
required this.startdate,
|
|
required this.enddate,
|
|
bool? renew,
|
|
}) : super(
|
|
RequestCache.cacheMinute,
|
|
onUpdate,
|
|
onError: onError ?? RequestCache.ignore,
|
|
renew: renew,
|
|
) {
|
|
start('wu-timetable-$startdate-$enddate');
|
|
}
|
|
|
|
@override
|
|
GetTimetableResponse onLocalData(String json) => GetTimetableResponse.fromJson(jsonDecode(json));
|
|
|
|
@override
|
|
Future<GetTimetableResponse> onLoad() async => GetTimetable(
|
|
GetTimetableParams(
|
|
options: GetTimetableParamsOptions(
|
|
element: GetTimetableParamsOptionsElement(
|
|
id: (await Authenticate.getSession()).personId,
|
|
type: (await Authenticate.getSession()).personType,
|
|
keyType: GetTimetableParamsOptionsElementKeyType.id,
|
|
),
|
|
startDate: startdate,
|
|
endDate: enddate,
|
|
teacherFields: GetTimetableParamsOptionsFields.all,
|
|
subjectFields: GetTimetableParamsOptionsFields.all,
|
|
roomFields: GetTimetableParamsOptionsFields.all,
|
|
klasseFields: GetTimetableParamsOptionsFields.all,
|
|
)
|
|
)
|
|
).run();
|
|
}
|