51 lines
1.4 KiB
Dart
51 lines
1.4 KiB
Dart
import 'package:bloc/bloc.dart';
|
|
import 'package:kmobile/api/services/user_service.dart';
|
|
import 'package:kmobile/core/errors/exceptions.dart';
|
|
import '../../../data/repositories/auth_repository.dart';
|
|
import 'auth_state.dart';
|
|
|
|
class AuthCubit extends Cubit<AuthState> {
|
|
final AuthRepository _authRepository;
|
|
final UserService _userService;
|
|
|
|
AuthCubit(this._authRepository, this._userService) : super(AuthInitial()) {
|
|
checkAuthStatus();
|
|
}
|
|
|
|
Future<void> checkAuthStatus() async {
|
|
emit(AuthLoading());
|
|
try {
|
|
final isLoggedIn = await _authRepository.isLoggedIn();
|
|
if (isLoggedIn) {
|
|
final users = await _userService.getUserDetails();
|
|
emit(Authenticated(users));
|
|
} else {
|
|
emit(Unauthenticated());
|
|
}
|
|
} catch (e) {
|
|
emit(AuthError(e.toString()));
|
|
}
|
|
}
|
|
|
|
Future<void> refreshUserData() async {
|
|
try {
|
|
// emit(AuthLoading());
|
|
final users = await _userService.getUserDetails();
|
|
emit(Authenticated(users));
|
|
} catch (e) {
|
|
emit(AuthError('Failed to refresh user data: ${e.toString()}'));
|
|
// Optionally, re-emit the previous state or handle as needed
|
|
}
|
|
}
|
|
|
|
Future<void> login(String customerNo, String password) async {
|
|
emit(AuthLoading());
|
|
try {
|
|
final users = await _authRepository.login(customerNo, password);
|
|
emit(Authenticated(users));
|
|
} catch (e) {
|
|
emit(AuthError(e is AuthException ? e.message : e.toString()));
|
|
}
|
|
}
|
|
}
|