35 lines
1.3 KiB
Dart
35 lines
1.3 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
import '../../../../../access/user_role.dart';
|
|
import '../../../../../api/marianumconnect/queries/get_capabilities/guardian_child.dart';
|
|
|
|
part 'capabilities_state.freezed.dart';
|
|
part 'capabilities_state.g.dart';
|
|
|
|
@freezed
|
|
abstract class CapabilitiesState with _$CapabilitiesState {
|
|
const CapabilitiesState._();
|
|
|
|
const factory CapabilitiesState({
|
|
@Default(false) bool viewForeignTimetables,
|
|
@Default(false) bool pushNotifications,
|
|
// Days into the past/future the timetable may be scrolled. Null = no
|
|
// client-side clamp; the (server-narrowed) school year alone governs.
|
|
int? timetablePastDays,
|
|
int? timetableFutureDays,
|
|
// Wire value of the user type; read it through [role].
|
|
String? userType,
|
|
// Students a guardian may see; empty for all other accounts.
|
|
@Default(<GuardianChild>[]) List<GuardianChild> children,
|
|
// Whether a capability response (or a definitive failure) has been
|
|
// observed at least once this session. Lets the UI distinguish "still
|
|
// unknown" from "confirmed not allowed".
|
|
@Default(false) bool loaded,
|
|
}) = _CapabilitiesState;
|
|
|
|
factory CapabilitiesState.fromJson(Map<String, Object?> json) =>
|
|
_$CapabilitiesStateFromJson(json);
|
|
|
|
UserRole get role => UserRole.parse(userType);
|
|
}
|