Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:options_x_ray_informer/BLOCs/events/UIRequests.dart';
- import 'package:options_x_ray_informer/BLOCs/states/ViewDataStates.dart';
- import 'package:options_x_ray_informer/model/Contract.dart';
- import 'package:options_x_ray_informer/model/network/Connection.dart';
- import 'package:options_x_ray_informer/model/network/ConnectionInterface.dart';
- import 'package:bloc/bloc.dart';
- import 'package:rxdart/rxdart.dart';
- class DashBLOC extends Bloc<Request, DataState>{
- ConnectionInterface _connection = Connection.instance;
- DashBLOC(ConnectionInterface connection){
- _connection = connection;
- }
- @override
- Stream<Request> transform(Stream<Request> events) {
- return (events as Observable<Request>)
- .debounce(Duration(milliseconds: 500));
- }
- @override
- DataState get initialState => EmptyDataState();
- @override
- Stream<DataState> mapEventToState(DataState currentState, event) async* {
- if (event is UpdateRequest) {
- try {
- var _futures = await _connection.fetchDashboard();
- yield new LoadedDataState(_futures);
- if (currentState is EmptyDataState) return;
- } catch (_) {
- yield ErrorDataState();
- }
- }
- if(event is UnfavRequest) {
- int unfavedID = event.contractIndex;
- print("dispatching $unfavedID");
- await _connection.deleteFavorite(event.contractIndex);
- List<Contract> list = (currentState as LoadedDataState).contracts;
- list[list.indexWhere((contract)=>contract.id == unfavedID)].isFavorite = false;
- //list.removeWhere((contract)=>contract.id == unfavedIndex);
- print("bloc count ${list.length}");
- yield new LoadedDataState(list);
- }
- if(event is FavRequest) {
- int favedID = event.contractIndex;
- (currentState as LoadedDataState).contracts[favedID].isFavorite = true;
- await _connection.pushFavorite(favedID);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement