38 lines
1.1 KiB
Dart
38 lines
1.1 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
import 'package:user_repository/user_repository.dart';
|
|
|
|
part 'profile_event.dart';
|
|
part 'profile_state.dart';
|
|
|
|
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
|
|
final UserRepository _userRepository;
|
|
|
|
ProfileBloc({required UserRepository userRepository,}) : _userRepository = userRepository,
|
|
super(UpdateUserInfoInitial()) {
|
|
|
|
|
|
|
|
on<UpdateUserInfo>(_onUpdateUserInfo);
|
|
}
|
|
|
|
void _onUpdateUserInfo(UpdateUserInfo event, Emitter<ProfileState> emit) async {
|
|
emit(UpdateUserInfoLoading());
|
|
try {
|
|
final userImageUrl = event.filePicture != null
|
|
? await _userRepository.uploadPicture(
|
|
event.filePicture!, event.myUser.id)
|
|
: null;
|
|
|
|
final myUser = userImageUrl == null
|
|
? event.myUser
|
|
: event.myUser.copyWith(picture: userImageUrl);
|
|
|
|
await _userRepository.updateUserInfo(myUser);
|
|
emit(const UpdateUserInfoSuccess());
|
|
} catch (e) {
|
|
emit(UpdateUserInfoFailure());
|
|
}
|
|
}
|
|
}
|