fix profile

This commit is contained in:
2026-08-18 15:09:53 +03:00
parent 80a95ece5b
commit 6513a004d9
16 changed files with 268 additions and 26 deletions

View File

@@ -1,25 +1,38 @@
import 'dart:async';
import 'package:be_happy/domain/usecase/delete_profile_usecase.dart';
import 'package:be_happy/domain/usecase/upload_profile_photo_usecase.dart';
import 'package:be_happy/presentation/viewmodel/splash_bloc.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/entities/user_profile.dart';
import '../../domain/usecase/get_profile_usecase.dart';
import '../../domain/usecase/logout_usecase.dart';
import '../../domain/usecase/update_profile_usecase.dart';
import '../event/profile_event.dart';
import '../event/spalsh_event.dart';
import '../state/profile_state.dart';
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
final GetProfileUseCase getProfileUseCase;
final UploadProfilePhotoUsecase uploadProfilePhotoUsecase;
final UpdateProfileUseCase updateProfileUseCase;
final DeleteProfileUsecase deleteProfileUsecase;
final LogoutUseCase logoutUseCase;
final SplashBloc splashBloc;
ProfileBloc(this.getProfileUseCase,
this.uploadProfilePhotoUsecase,
this.updateProfileUseCase)
this.updateProfileUseCase,
this.deleteProfileUsecase,
this.logoutUseCase,
this.splashBloc)
: super(ProfileState.initial()) {
on<ProfileStarted>(_onStarted);
on<ProfileUpdated>(_onUpdated);
on<ProfilePhotoUpdated>(_onPhotoUploaded);
on<DeleteProfilePressed>(_onDeleteProfilePressed);
}
Future<void> _onStarted(
@@ -55,7 +68,6 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
final avatarId = await uploadProfilePhotoUsecase(event.imageFile);
if (avatarId != null) {
// Отправляем PATCH запрос с новым avatarId
await updateProfileUseCase(UserProfile(
name: '',
birthDate: '',
@@ -72,4 +84,14 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
emit(state.copyWith(isLoading: false, error: "Ошибка загрузки: ${e.toString()}"));
}
}
FutureOr<void> _onDeleteProfilePressed(DeleteProfilePressed event, Emitter<ProfileState> emit) async {
try {
await deleteProfileUsecase();
splashBloc.add(AuthLogoutRequested());
} catch (e) {
emit(state.copyWith(isLoading: false, error: "Ошибка удаления профиля: ${e.toString()}"));
}
}
}