76 lines
2.4 KiB
Dart
76 lines
2.4 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import '../../localPreference/local_preference.dart';
|
|
import '../models/create_account_model.dart';
|
|
import '../repository/create_account_repository.dart';
|
|
import 'create_account_event.dart';
|
|
import 'create_account_state.dart';
|
|
|
|
class CreateAccountBloc extends Bloc<CreateAccountEvent, CreateAccountState> {
|
|
final CreateAccountRepository repository;
|
|
|
|
CreateAccountBloc({required this.repository})
|
|
: super(const CreateAccountInitial()) {
|
|
on<CreateAccountSubmitted>(_onCreateAccountSubmitted);
|
|
on<CreateAccountReset>(_onCreateAccountReset);
|
|
}
|
|
|
|
Future<void> _onCreateAccountSubmitted(
|
|
CreateAccountSubmitted event,
|
|
Emitter<CreateAccountState> emit,
|
|
) async {
|
|
emit(const CreateAccountLoading());
|
|
|
|
try {
|
|
final response = await repository.registerUser(
|
|
firstName: event.firstName,
|
|
lastName: event.lastName,
|
|
emailAddress: event.emailAddress,
|
|
mobileNumber: event.mobileNumber,
|
|
address1: event.address1,
|
|
address2: event.address2,
|
|
city: event.city,
|
|
state: event.state,
|
|
country: event.country,
|
|
postalCode: event.postalCode,
|
|
);
|
|
await LocalPreference.setLogin(true);
|
|
// ✅ FIX: Parse directly from response, just like verify OTP
|
|
final userModel = UserRegisteredModel.fromJson(response);
|
|
|
|
await LocalPreference.setTokens(
|
|
accessToken: userModel.accessToken,
|
|
refreshToken: userModel.refreshToken,
|
|
refreshTokenMaxAge: userModel.refreshTokenMaxAge,
|
|
);
|
|
|
|
await LocalPreference.setUserDetails(
|
|
userId: userModel.user.id,
|
|
firstName: userModel.user.firstName,
|
|
lastName: userModel.user.lastName,
|
|
fullName: userModel.user.fullName,
|
|
emailAddress: userModel.user.emailAddress,
|
|
role: userModel.user.role,
|
|
roleId: userModel.user.roleId,
|
|
);
|
|
|
|
await LocalPreference.setProfileImage(userModel.user.profileImage);
|
|
|
|
emit(CreateAccountSuccess(
|
|
message: 'Account created successfully',
|
|
userData: response,
|
|
));
|
|
} catch (e) {
|
|
emit(CreateAccountFailure(
|
|
errorMessage: e.toString().replaceAll('Exception: ', ''),
|
|
));
|
|
}
|
|
}
|
|
|
|
void _onCreateAccountReset(
|
|
CreateAccountReset event,
|
|
Emitter<CreateAccountState> emit,
|
|
) {
|
|
emit(const CreateAccountInitial());
|
|
}
|
|
}
|