br-programmer / clean_architecture_with_riverpod_auth

0 stars 0 forks source link

Cambios #1

Open darwin-morocho opened 6 months ago

darwin-morocho commented 6 months ago

IMPORTANTE: Usar record types para mostrar el icono y el mesaje de error

Ejemplo


  Future<void> _signIn() async {
     final failure  = await  _signInWithEmail(email, password);
     if(failure ==null ){
/// redirect to home
return;
   }

  final mapper = switch(failure){
       InvalidCredentialsFailure() => (icon: Icons.error, message: 'Invalid password'),
       .
       .
       .
      UnknownFailure() => (icon: Icons.unknown_error, message:'Unknown error')
  };
}

  Future<AuthFailure?> _signInWithEmail(String email, String password) async {
    try {
      final credentials = await _firebaseAuth.signInWithEmailAndPassword(
        email: email,
        password: password,
      );
      final user = credentials.user;
     return null; // success
    } on FirebaseAuthException catch (e) {

    return  switch(e.type){
        /// return the error type as a typed data
       'firebase/invalid-credentials' :  InvalidCredentialsFailure(),
        - => UnknownFailure(),
       }      ;

    } catch (e){
       return UnknownFailure()
    }
  }

sealed class AuthFailure{}
class NetworkFailure extends AuthFailure{}
class UserNotFoundFailure extends AuthFailure{}
class InvalidCredentialsFailure extends AuthFailure{}
class UserBlockedFailure extends AuthFailure{}
class UnknownFailure extends AuthFailure{}
br-programmer commented 6 months ago

@darwin-morocho cambios listo, puedes volver a revisar y confirmar que todo esté ok, por favor!