Files
prosappco/lib/blocs/professional_profile_bloc/professional_profile_bloc.dart
T
Lizandro GuarnizoandClaude Sonnet 4.6 733384091c feat: migrate prosappco from Firebase to NestJS REST API (Fase 2)
- Replace all Firebase* repositories with Api* repositories using HTTP + SharedPreferences JWT
- Remove Firebase.initializeApp() and firebase_messaging background handler from main.dart
- Update DI (app_di.dart) to inject Api* repositories instead of Firebase* ones
- Replace all Timestamp/cloud_firestore usage with ISO 8601 String dates
- Stub PhoneVerificationService (Firebase phone OTP → backend OTP when implemented)
- Add ApiService singleton with JWT management in lib/services/
- Legacy firebase_*_repository.dart files preserved for Fase 4 cleanup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 16:53:11 -05:00

56 lines
1.8 KiB
Dart

import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:professional_repository/professional_repository.dart';
part 'professional_profile_event.dart';
part 'professional_profile_state.dart';
class ProfessionalProfileBloc
extends Bloc<ProfessionalProfileEvent, ProfessionalProfileState> {
final ApiProfessionalRepository _professionalRepository;
ProfessionalProfileBloc(
{required ApiProfessionalRepository professionalRepository})
: _professionalRepository = professionalRepository,
super((UpdateProfessionalInfoInitial())) {
on<UpdateProfessionalBannerInfo>(_onUpdateProfessionalBannerInfo);
on<UpdateProfessionalProfileInfo>(_onUpdateProfessionalProfileInfo);
}
void _onUpdateProfessionalBannerInfo(UpdateProfessionalBannerInfo event,
Emitter<ProfessionalProfileState> emit) async {
emit(UpdateProfessionalInfoLoading());
try {
event.fileBanner != null
? await _professionalRepository.uploadBannerPicture(event.fileBanner!)
: null;
emit(const UpdateProfessionalInfoSuccess());
} catch (e) {
emit(UpdateProfessionalInfoFailure());
}
}
void _onUpdateProfessionalProfileInfo(UpdateProfessionalProfileInfo event,
Emitter<ProfessionalProfileState> emit) async {
emit(UpdateProfessionalInfoLoading());
try {
await _professionalRepository.updateProfessionalInfo(
event.address,
event.aditionalAddress,
event.ratePreferences,
event.rate,
event.locationPreferences,
event.latitude,
event.longitude,
event.schedules,
event.paymentMethods,
);
emit(const UpdateProfessionalInfoSuccess());
} catch (e) {
emit(UpdateProfessionalInfoFailure());
}
}
}