import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hoshan/data/model/ai/credit_model.dart'; import 'package:hoshan/data/model/auth/user_info_model.dart'; import 'package:hoshan/data/repository/auth_repository.dart'; part 'user_info_state.dart'; class UserInfoCubit extends Cubit { UserInfoCubit() : super(UserInfoInitial()); static UserInfoModel userInfoModel = UserInfoModel(); Future getUserInfo() async { if (state is UserInfoLoading) return; emit(UserInfoLoading()); try { final response = await AuthRepository.getUserInfo(); userInfoModel = response; userInfoModel.login = true; emit(UserInfoSuccess()); } on DioException catch (e) { if (e.type == DioExceptionType.connectionError || e.type == DioExceptionType.connectionTimeout) { emit(UserInfoConnectionError()); } else if (e.response != null && e.response!.statusCode != null && e.response!.statusCode! >= 500) { emit(UserInfoServerFail()); } else { emit(UserInfoFail()); } if (kDebugMode) { print("Dio Error is : $e"); } } } void changeUser(UserInfoModel newUserInfoModel) { userInfoModel = newUserInfoModel; emit(UserInfoSuccess()); } void changeCredit(CreditModel newUserInfoModel) { final user = userInfoModel; if (newUserInfoModel.credit != null) { user.credit = newUserInfoModel.credit; } if (newUserInfoModel.freeCredit != null) { user.freeCredit = newUserInfoModel.freeCredit; } userInfoModel = user; emit(UserInfoSuccess()); } void clearUser() { userInfoModel = UserInfoModel(); emit(UserInfoSuccess()); } }