mnemo_cards/lib/features/packs/loading_packs_holder.dart
2024-08-18 20:02:36 +03:00

49 lines
1,012 B
Dart

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,
);
}