import 'package:aitrainer_app/bloc/account/account_bloc.dart'; import 'package:aitrainer_app/model/cache.dart'; import 'package:aitrainer_app/repository/exercise_repository.dart'; import 'package:aitrainer_app/repository/user_repository.dart'; import 'package:aitrainer_app/service/exercise_tree_service.dart'; import 'package:aitrainer_app/service/exercisetype_service.dart'; import 'package:aitrainer_app/service/property_service.dart'; import 'package:aitrainer_app/util/common.dart'; import 'package:flutter_form_bloc/flutter_form_bloc.dart'; class LoginFormBloc extends FormBloc with Common { final AccountBloc accountBloc; final UserRepository userRepository; final emailField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final passwordField = TextFieldBloc(validators: [ FieldBlocValidators.required, ]); LoginFormBloc({this.userRepository, this.accountBloc}) { addFieldBlocs(fieldBlocs: [emailField, passwordField]); emailField.onValueChanges(onData: (previous, current) async* { userRepository.setEmail(current.value); }); passwordField.onValueChanges(onData: (previous, current) async* { userRepository.setPassword(current.value); }); } @override void onSubmitting() async { try { emitLoading(progress: 30); if (!validateEmail(userRepository)) { emailField.addFieldError(EMAIL_ERROR, isPermanent: true); emitFailure(failureResponse: EMAIL_ERROR); } else if (!validatePassword(userRepository)) { passwordField.addFieldError(PASSWORD_ERROR, isPermanent: true); emitFailure(failureResponse: PASSWORD_ERROR); } else { // Emit either Loaded or Error await PropertyApi().getProperties(); print("properties OK"); await userRepository.getUser(); print("get User OK"); await ExerciseTypeApi().getExerciseTypes(); print("exerciesTypes OK"); await ExerciseTreeApi().getExerciseTree(); if (Cache().userLoggedIn != null && Cache().userLoggedIn.customerId > 0) { ExerciseRepository exerciseRepository = ExerciseRepository(); await exerciseRepository.getExercisesByCustomer(Cache().userLoggedIn.customerId); } emitSuccess(canSubmitAgain: false); accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn)); Cache().initBadges(); } } on Exception catch (ex) { emitFailure(failureResponse: ex.toString()); } } }