mnemo_cards/lib/features/packs/loading_packs_holder.dart

50 lines
1,012 B
Dart
Raw Normal View History

2024-08-18 16:52:03 +00:00
import 'dart:async';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import 'package:rxdart/rxdart.dart';
class LoadingPacksHolder {
final StreamController<LoadingPacksState?> _streamController =
StreamController.broadcast();
LoadingPacksState? _state;
LoadingPacksHolder();
void addLoadingPack(
CardPackLoadingDto dto,
) {
_state = LoadingPacksState({
...?_state?.packs.where((p) => p.id != dto.id),
dto,
});
_streamController.add(_state);
}
void removeLoadingPack(
String id,
) {
_state = LoadingPacksState(
{...?_state?.packs.where((p) => p.id != id)},
);
_streamController.add(_state);
}
void clear() {
_state = null;
_streamController.add(_state);
}
LoadingPacksState? get state => _state;
Stream<LoadingPacksState?> get asStream =>
_streamController.stream.startWith(_state);
}
class LoadingPacksState {
final Set<CardPackLoadingDto> packs;
LoadingPacksState(
this.packs,
);
}