This commit is contained in:
Felipe
2024-02-20 17:11:43 -05:00
parent 29d18e93e0
commit e00772f58a
21 changed files with 386 additions and 279 deletions
+43
View File
@@ -0,0 +1,43 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:user_repository/user_repository.dart';
part 'auth_event.dart';
part 'auth_state.dart';
class AuthBloc extends Bloc<AuthEvent, AuthState> {
final UserRepository _userRepository;
AuthBloc({required UserRepository userRepository})
: _userRepository = userRepository,
super(AuthStateInitial()) {
on<AuthEventLoginOAuth>(_onAuthEventLoginOAuth);
on<AuthEventVerifyOAuth>(_onAuthEventVerifyOAuth);
}
void _onAuthEventLoginOAuth(
AuthEventLoginOAuth event, Emitter<AuthState> emit) async {
emit(AuthStateProcess());
try {
await _userRepository.signInWithPhoneNumber(event.phone);
emit(const AuthStateVerifyOAuth(false));
} catch (e) {
emit(const AuthStateFailure());
}
}
void _onAuthEventVerifyOAuth(
AuthEventVerifyOAuth event, Emitter<AuthState> emit) async {
emit(AuthStateProcess());
try {
final bool isVerified = await _userRepository.verifyOTP(event.code);
(isVerified)
? emit(AuthStateSuccess())
: emit(const AuthStateVerifyOAuth(true));
} catch (e) {
emit(const AuthStateFailure());
}
}
}
+20
View File
@@ -0,0 +1,20 @@
part of 'auth_bloc.dart';
abstract class AuthEvent extends Equatable {
const AuthEvent();
@override
List<Object> get props => [];
}
class AuthEventLoginOAuth extends AuthEvent {
final String phone;
const AuthEventLoginOAuth({required this.phone});
}
class AuthEventVerifyOAuth extends AuthEvent {
final String code;
const AuthEventVerifyOAuth({required this.code});
}
+26
View File
@@ -0,0 +1,26 @@
part of 'auth_bloc.dart';
abstract class AuthState extends Equatable {
const AuthState();
@override
List<Object> get props => [];
}
class AuthStateInitial extends AuthState {}
class AuthStateProcess extends AuthState {}
class AuthStateVerifyOAuth extends AuthState {
final bool isWrongCode;
const AuthStateVerifyOAuth(this.isWrongCode);
}
class AuthStateSuccess extends AuthState {}
class AuthStateFailure extends AuthState {
final String? message;
const AuthStateFailure({this.message});
}