implemented Ticker page selection persistence and enhanced ProseMirror table display modes
This commit is contained in:
@@ -6,13 +6,19 @@ import '../../../../../api/marianumconnect/queries/get_ticker_nav/get_ticker_nav
|
||||
part 'ticker_state.freezed.dart';
|
||||
part 'ticker_state.g.dart';
|
||||
|
||||
/// Hydrated ticker module state: the current "Aktuelles" post plus the filtered
|
||||
/// page tree. Page contents are loaded on demand in the detail screen and are
|
||||
/// deliberately not cached here.
|
||||
/// Hydrated ticker module state: the current "Aktuelles" post, the filtered
|
||||
/// page tree and the slug of the page the user last had open ([selectedSlug],
|
||||
/// null = "Aktuelles" home). Persisting the slug lets the ticker reopen on the
|
||||
/// last page instead of always falling back to home; a slug that is no longer
|
||||
/// in [nav] (deleted/hidden) is discarded by the view. Page contents are loaded
|
||||
/// on demand in the detail screen and are deliberately not cached here.
|
||||
@freezed
|
||||
abstract class TickerState with _$TickerState {
|
||||
const factory TickerState({TickerResponse? ticker, TickerNavResponse? nav}) =
|
||||
_TickerState;
|
||||
const factory TickerState({
|
||||
TickerResponse? ticker,
|
||||
TickerNavResponse? nav,
|
||||
String? selectedSlug,
|
||||
}) = _TickerState;
|
||||
|
||||
factory TickerState.fromJson(Map<String, dynamic> json) =>
|
||||
_$TickerStateFromJson(json);
|
||||
|
||||
@@ -15,7 +15,7 @@ T _$identity<T>(T value) => value;
|
||||
/// @nodoc
|
||||
mixin _$TickerState {
|
||||
|
||||
TickerResponse? get ticker; TickerNavResponse? get nav;
|
||||
TickerResponse? get ticker; TickerNavResponse? get nav; String? get selectedSlug;
|
||||
/// Create a copy of TickerState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@@ -28,16 +28,16 @@ $TickerStateCopyWith<TickerState> get copyWith => _$TickerStateCopyWithImpl<Tick
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is TickerState&&(identical(other.ticker, ticker) || other.ticker == ticker)&&(identical(other.nav, nav) || other.nav == nav));
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is TickerState&&(identical(other.ticker, ticker) || other.ticker == ticker)&&(identical(other.nav, nav) || other.nav == nav)&&(identical(other.selectedSlug, selectedSlug) || other.selectedSlug == selectedSlug));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,ticker,nav);
|
||||
int get hashCode => Object.hash(runtimeType,ticker,nav,selectedSlug);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TickerState(ticker: $ticker, nav: $nav)';
|
||||
return 'TickerState(ticker: $ticker, nav: $nav, selectedSlug: $selectedSlug)';
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ abstract mixin class $TickerStateCopyWith<$Res> {
|
||||
factory $TickerStateCopyWith(TickerState value, $Res Function(TickerState) _then) = _$TickerStateCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
TickerResponse? ticker, TickerNavResponse? nav
|
||||
TickerResponse? ticker, TickerNavResponse? nav, String? selectedSlug
|
||||
});
|
||||
|
||||
|
||||
@@ -65,11 +65,12 @@ class _$TickerStateCopyWithImpl<$Res>
|
||||
|
||||
/// Create a copy of TickerState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? ticker = freezed,Object? nav = freezed,}) {
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? ticker = freezed,Object? nav = freezed,Object? selectedSlug = freezed,}) {
|
||||
return _then(_self.copyWith(
|
||||
ticker: freezed == ticker ? _self.ticker : ticker // ignore: cast_nullable_to_non_nullable
|
||||
as TickerResponse?,nav: freezed == nav ? _self.nav : nav // ignore: cast_nullable_to_non_nullable
|
||||
as TickerNavResponse?,
|
||||
as TickerNavResponse?,selectedSlug: freezed == selectedSlug ? _self.selectedSlug : selectedSlug // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
));
|
||||
}
|
||||
|
||||
@@ -154,10 +155,10 @@ return $default(_that);case _:
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( TickerResponse? ticker, TickerNavResponse? nav)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( TickerResponse? ticker, TickerNavResponse? nav, String? selectedSlug)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TickerState() when $default != null:
|
||||
return $default(_that.ticker,_that.nav);case _:
|
||||
return $default(_that.ticker,_that.nav,_that.selectedSlug);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
@@ -175,10 +176,10 @@ return $default(_that.ticker,_that.nav);case _:
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( TickerResponse? ticker, TickerNavResponse? nav) $default,) {final _that = this;
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( TickerResponse? ticker, TickerNavResponse? nav, String? selectedSlug) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TickerState():
|
||||
return $default(_that.ticker,_that.nav);case _:
|
||||
return $default(_that.ticker,_that.nav,_that.selectedSlug);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
@@ -195,10 +196,10 @@ return $default(_that.ticker,_that.nav);case _:
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( TickerResponse? ticker, TickerNavResponse? nav)? $default,) {final _that = this;
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( TickerResponse? ticker, TickerNavResponse? nav, String? selectedSlug)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TickerState() when $default != null:
|
||||
return $default(_that.ticker,_that.nav);case _:
|
||||
return $default(_that.ticker,_that.nav,_that.selectedSlug);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
@@ -210,11 +211,12 @@ return $default(_that.ticker,_that.nav);case _:
|
||||
@JsonSerializable()
|
||||
|
||||
class _TickerState implements TickerState {
|
||||
const _TickerState({this.ticker, this.nav});
|
||||
const _TickerState({this.ticker, this.nav, this.selectedSlug});
|
||||
factory _TickerState.fromJson(Map<String, dynamic> json) => _$TickerStateFromJson(json);
|
||||
|
||||
@override final TickerResponse? ticker;
|
||||
@override final TickerNavResponse? nav;
|
||||
@override final String? selectedSlug;
|
||||
|
||||
/// Create a copy of TickerState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@@ -229,16 +231,16 @@ Map<String, dynamic> toJson() {
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TickerState&&(identical(other.ticker, ticker) || other.ticker == ticker)&&(identical(other.nav, nav) || other.nav == nav));
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TickerState&&(identical(other.ticker, ticker) || other.ticker == ticker)&&(identical(other.nav, nav) || other.nav == nav)&&(identical(other.selectedSlug, selectedSlug) || other.selectedSlug == selectedSlug));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,ticker,nav);
|
||||
int get hashCode => Object.hash(runtimeType,ticker,nav,selectedSlug);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TickerState(ticker: $ticker, nav: $nav)';
|
||||
return 'TickerState(ticker: $ticker, nav: $nav, selectedSlug: $selectedSlug)';
|
||||
}
|
||||
|
||||
|
||||
@@ -249,7 +251,7 @@ abstract mixin class _$TickerStateCopyWith<$Res> implements $TickerStateCopyWith
|
||||
factory _$TickerStateCopyWith(_TickerState value, $Res Function(_TickerState) _then) = __$TickerStateCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
TickerResponse? ticker, TickerNavResponse? nav
|
||||
TickerResponse? ticker, TickerNavResponse? nav, String? selectedSlug
|
||||
});
|
||||
|
||||
|
||||
@@ -266,11 +268,12 @@ class __$TickerStateCopyWithImpl<$Res>
|
||||
|
||||
/// Create a copy of TickerState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? ticker = freezed,Object? nav = freezed,}) {
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? ticker = freezed,Object? nav = freezed,Object? selectedSlug = freezed,}) {
|
||||
return _then(_TickerState(
|
||||
ticker: freezed == ticker ? _self.ticker : ticker // ignore: cast_nullable_to_non_nullable
|
||||
as TickerResponse?,nav: freezed == nav ? _self.nav : nav // ignore: cast_nullable_to_non_nullable
|
||||
as TickerNavResponse?,
|
||||
as TickerNavResponse?,selectedSlug: freezed == selectedSlug ? _self.selectedSlug : selectedSlug // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,12 @@ _TickerState _$TickerStateFromJson(Map<String, dynamic> json) => _TickerState(
|
||||
nav: json['nav'] == null
|
||||
? null
|
||||
: TickerNavResponse.fromJson(json['nav'] as Map<String, dynamic>),
|
||||
selectedSlug: json['selectedSlug'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TickerStateToJson(_TickerState instance) =>
|
||||
<String, dynamic>{'ticker': instance.ticker, 'nav': instance.nav};
|
||||
<String, dynamic>{
|
||||
'ticker': instance.ticker,
|
||||
'nav': instance.nav,
|
||||
'selectedSlug': instance.selectedSlug,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user