LCOV - code coverage report
Current view: top level - lib/presentation/blocs/authentication/login - login_bloc.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 37 0.0 %
Date: 2020-06-26 11:36:11 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:async';
       2             : 
       3             : import 'package:app_pym/core/validators.dart';
       4             : import 'package:app_pym/domain/usecases/authentication/signin.dart';
       5             : import 'package:app_pym/domain/usecases/authentication/signup.dart';
       6             : import 'package:flutter/foundation.dart';
       7             : import 'package:flutter/services.dart';
       8             : import 'package:flutter_bloc/flutter_bloc.dart';
       9             : import 'package:freezed_annotation/freezed_annotation.dart';
      10             : import 'package:injectable/injectable.dart';
      11             : import 'package:rxdart/rxdart.dart' show DebounceExtensions, MergeExtension;
      12             : 
      13             : part 'login_bloc.freezed.dart';
      14             : part 'login_event.dart';
      15             : part 'login_state.dart';
      16             : 
      17             : @prod
      18             : @injectable
      19             : class LoginBloc extends Bloc<LoginEvent, LoginState> {
      20             :   final AuthSignIn signIn;
      21             :   final AuthSignUp signUp;
      22             : 
      23           0 :   LoginBloc(this.signIn, this.signUp);
      24             : 
      25           0 :   @override
      26           0 :   LoginState get initialState => LoginState.empty();
      27             : 
      28             :   @override
      29           0 :   Stream<LoginState> mapEventToState(LoginEvent event) async* {
      30           0 :     yield* event.when(
      31           0 :         emailChanged: _mapEmailChangedToState,
      32           0 :         passwordChanged: _mapPasswordChangedToState,
      33           0 :         withCredentialsPressed: _mapWithCredentialsPressedToState,
      34           0 :         signUp: _mapFormSubmittedToState);
      35             :   }
      36             : 
      37           0 :   @override
      38             :   Stream<Transition<LoginEvent, LoginState>> transformEvents(
      39             :       Stream<LoginEvent> events,
      40             :       Stream<Transition<LoginEvent, LoginState>> Function(LoginEvent)
      41             :           transitionFn) {
      42           0 :     final nonDebounceStream = events.where((event) {
      43           0 :       return event is! EmailChanged && event is! PasswordChanged;
      44             :     });
      45           0 :     final debounceStream = events.where((event) {
      46           0 :       return event is EmailChanged || event is PasswordChanged;
      47           0 :     }).debounceTime(const Duration(milliseconds: 300));
      48           0 :     return super.transformEvents(
      49           0 :         nonDebounceStream.mergeWith([debounceStream]), transitionFn);
      50             :   }
      51             : 
      52           0 :   Stream<LoginState> _mapEmailChangedToState(String email) async* {
      53           0 :     yield state.updateEmail(
      54           0 :       isEmailValid: Validators.isValidEmail(email),
      55             :     );
      56             :   }
      57             : 
      58           0 :   Stream<LoginState> _mapWithCredentialsPressedToState(
      59             :     String email,
      60             :     String password,
      61             :   ) async* {
      62           0 :     yield LoginState.loading();
      63             :     try {
      64           0 :       await signIn(SignInCredentials(email, password));
      65           0 :       yield LoginState.success();
      66           0 :     } on PlatformException catch (e) {
      67           0 :       yield LoginState.failure(e.message);
      68             :     } catch (e) {
      69           0 :       yield LoginState.failure(e.toString());
      70             :     }
      71             :   }
      72             : 
      73           0 :   Stream<LoginState> _mapPasswordChangedToState(String password) async* {
      74           0 :     yield state.updatePassword(
      75           0 :       isPasswordValid: Validators.isValidPassword(password),
      76             :     );
      77             :   }
      78             : 
      79           0 :   Stream<LoginState> _mapFormSubmittedToState(
      80             :     String email,
      81             :     String password,
      82             :   ) async* {
      83           0 :     yield LoginState.loading();
      84             :     try {
      85           0 :       await signUp(SignUpCredentials(email, password));
      86           0 :       yield LoginState.success();
      87           0 :     } on PlatformException catch (e) {
      88           0 :       yield LoginState.failure(e.message);
      89             :     } catch (e) {
      90           0 :       yield LoginState.failure(e.toString());
      91             :     }
      92             :   }
      93             : }

Generated by: LCOV version 1.13