Advertisement
teaowl

DashBLOC

Apr 5th, 2019
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.91 KB | None | 0 0
  1. import 'package:options_x_ray_informer/BLOCs/events/UIRequests.dart';
  2. import 'package:options_x_ray_informer/BLOCs/states/ViewDataStates.dart';
  3. import 'package:options_x_ray_informer/model/Contract.dart';
  4. import 'package:options_x_ray_informer/model/network/Connection.dart';
  5. import 'package:options_x_ray_informer/model/network/ConnectionInterface.dart';
  6. import 'package:bloc/bloc.dart';
  7. import 'package:rxdart/rxdart.dart';
  8.  
  9. class DashBLOC extends Bloc<Request, DataState>{
  10.   ConnectionInterface _connection = Connection.instance;
  11.  
  12.   DashBLOC(ConnectionInterface connection){
  13.     _connection = connection;
  14.   }
  15.  
  16.   @override
  17.   Stream<Request> transform(Stream<Request> events) {
  18.     return (events as Observable<Request>)
  19.         .debounce(Duration(milliseconds: 500));
  20.   }
  21.   @override
  22.   DataState get initialState => EmptyDataState();
  23.  
  24.   @override
  25.   Stream<DataState> mapEventToState(DataState currentState, event) async* {
  26.     if (event is UpdateRequest) {
  27.       try {
  28.         var _futures = await _connection.fetchDashboard();
  29.         yield new LoadedDataState(_futures);
  30.        
  31.         if (currentState is EmptyDataState) return;
  32.       } catch (_) {
  33.         yield ErrorDataState();
  34.       }
  35.     }
  36.     if(event is UnfavRequest) {
  37.       int unfavedID = event.contractIndex;
  38.       print("dispatching $unfavedID");
  39.       await _connection.deleteFavorite(event.contractIndex);
  40.       List<Contract> list = (currentState as LoadedDataState).contracts;
  41.       list[list.indexWhere((contract)=>contract.id == unfavedID)].isFavorite = false;
  42.       //list.removeWhere((contract)=>contract.id == unfavedIndex);
  43.       print("bloc count ${list.length}");
  44.       yield new LoadedDataState(list);
  45.     }
  46.  
  47.     if(event is FavRequest) {
  48.       int favedID = event.contractIndex;
  49.       (currentState as LoadedDataState).contracts[favedID].isFavorite = true;
  50.       await _connection.pushFavorite(favedID);
  51.     }
  52.   }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement