claude refactorings, flutter best practices, platform dependent changes, general cleanup
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../webuntis_api.dart';
|
||||
import 'get_timegrid_units_response.dart';
|
||||
|
||||
class GetTimegridUnits extends WebuntisApi {
|
||||
GetTimegridUnits() : super('getTimegridUnits', null);
|
||||
|
||||
@override
|
||||
Future<GetTimegridUnitsResponse> run() async {
|
||||
final rawAnswer = await query(this);
|
||||
try {
|
||||
return finalize(GetTimegridUnitsResponse.fromJson(jsonDecode(rawAnswer) as Map<String, dynamic>));
|
||||
} catch (e, trace) {
|
||||
log(trace.toString());
|
||||
log('Failed to parse getTimegridUnits data with server response: $rawAnswer');
|
||||
}
|
||||
|
||||
throw Exception('Failed to parse getTimegridUnits server response: $rawAnswer');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import '../../../request_cache.dart';
|
||||
import 'get_timegrid_units.dart';
|
||||
import 'get_timegrid_units_response.dart';
|
||||
|
||||
class GetTimegridUnitsCache extends SimpleCache<GetTimegridUnitsResponse> {
|
||||
GetTimegridUnitsCache({super.onUpdate, super.renew})
|
||||
: super(
|
||||
cacheTime: RequestCache.cacheDay,
|
||||
loader: () => GetTimegridUnits().run(),
|
||||
fromJson: GetTimegridUnitsResponse.fromJson,
|
||||
) {
|
||||
start('wu-timegrid');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import '../../../api_response.dart';
|
||||
|
||||
part 'get_timegrid_units_response.g.dart';
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class GetTimegridUnitsResponse extends ApiResponse {
|
||||
List<GetTimegridUnitsResponseDay> result;
|
||||
|
||||
GetTimegridUnitsResponse(this.result);
|
||||
|
||||
factory GetTimegridUnitsResponse.fromJson(Map<String, dynamic> json) => _$GetTimegridUnitsResponseFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimegridUnitsResponseToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class GetTimegridUnitsResponseDay {
|
||||
int day;
|
||||
List<GetTimegridUnitsResponseUnit> timeUnits;
|
||||
|
||||
GetTimegridUnitsResponseDay(this.day, this.timeUnits);
|
||||
|
||||
factory GetTimegridUnitsResponseDay.fromJson(Map<String, dynamic> json) => _$GetTimegridUnitsResponseDayFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimegridUnitsResponseDayToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class GetTimegridUnitsResponseUnit {
|
||||
String name;
|
||||
int startTime;
|
||||
int endTime;
|
||||
|
||||
GetTimegridUnitsResponseUnit(this.name, this.startTime, this.endTime);
|
||||
|
||||
factory GetTimegridUnitsResponseUnit.fromJson(Map<String, dynamic> json) => _$GetTimegridUnitsResponseUnitFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetTimegridUnitsResponseUnitToJson(this);
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_timegrid_units_response.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
GetTimegridUnitsResponse _$GetTimegridUnitsResponseFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) =>
|
||||
GetTimegridUnitsResponse(
|
||||
(json['result'] as List<dynamic>)
|
||||
.map(
|
||||
(e) => GetTimegridUnitsResponseDay.fromJson(
|
||||
e as Map<String, dynamic>,
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
)
|
||||
..headers = (json['headers'] as Map<String, dynamic>?)?.map(
|
||||
(k, e) => MapEntry(k, e as String),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimegridUnitsResponseToJson(
|
||||
GetTimegridUnitsResponse instance,
|
||||
) => <String, dynamic>{
|
||||
'headers': ?instance.headers,
|
||||
'result': instance.result.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
|
||||
GetTimegridUnitsResponseDay _$GetTimegridUnitsResponseDayFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => GetTimegridUnitsResponseDay(
|
||||
(json['day'] as num).toInt(),
|
||||
(json['timeUnits'] as List<dynamic>)
|
||||
.map(
|
||||
(e) => GetTimegridUnitsResponseUnit.fromJson(e as Map<String, dynamic>),
|
||||
)
|
||||
.toList(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimegridUnitsResponseDayToJson(
|
||||
GetTimegridUnitsResponseDay instance,
|
||||
) => <String, dynamic>{
|
||||
'day': instance.day,
|
||||
'timeUnits': instance.timeUnits.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
|
||||
GetTimegridUnitsResponseUnit _$GetTimegridUnitsResponseUnitFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => GetTimegridUnitsResponseUnit(
|
||||
json['name'] as String,
|
||||
(json['startTime'] as num).toInt(),
|
||||
(json['endTime'] as num).toInt(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetTimegridUnitsResponseUnitToJson(
|
||||
GetTimegridUnitsResponseUnit instance,
|
||||
) => <String, dynamic>{
|
||||
'name': instance.name,
|
||||
'startTime': instance.startTime,
|
||||
'endTime': instance.endTime,
|
||||
};
|
||||
Reference in New Issue
Block a user