Files
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

110 lines
4.5 KiB
Dart

import 'package:chat_repository/chat_repository.dart';
import 'package:injector/injector.dart';
import 'package:profession_repository/profession_repository.dart';
import 'package:professional_repository/professional_repository.dart';
import 'package:prosappco/blocs/auth_bloc/auth_bloc.dart';
import 'package:prosappco/blocs/authentication_bloc/authentication_bloc.dart';
import 'package:prosappco/blocs/chat_bloc/chat_bloc.dart';
import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart';
import 'package:prosappco/blocs/notification_bloc/notification_bloc.dart';
import 'package:prosappco/blocs/professional_bloc/professional_bloc.dart';
import 'package:prosappco/blocs/professional_list_bloc/professional_list_bloc.dart';
import 'package:prosappco/blocs/professional_profile_bloc/professional_profile_bloc.dart';
import 'package:prosappco/blocs/profile_bloc/profile_bloc.dart';
import 'package:prosappco/blocs/score_bloc/score_bloc.dart';
import 'package:prosappco/blocs/service_bloc/service_bloc.dart';
import 'package:prosappco/blocs/setting_bloc/setting_bloc.dart';
import 'package:prosappco/blocs/sign_up_bloc/sign_up_bloc.dart';
import 'package:prosappco/blocs/sing_in_bloc/sign_in_bloc.dart';
import 'package:prosappco/local_notifications/local_notifications.dart';
import 'package:score_repository/score_repository.dart';
import 'package:service_repository/service_repository.dart';
import 'package:user_repository/user_repository.dart';
import 'package:city_repository/city_repository.dart';
import 'package:setting_repository/setting_repository.dart';
class AppDI {
void register() {
final injector = Injector.appInstance;
injector.registerSingleton<UserRepository>(
(() => ApiUserRepository()));
injector.registerSingleton<CityRepository>(() => ApiCityRepository());
injector.registerSingleton<ProfessionRepository>(
() => ApiProfessionRepository());
injector.registerSingleton<SettingRepository>(
() => ApiSettingRepository());
injector.registerSingleton(() => ApiProfessionalRepository());
injector.registerSingleton(() => ApiServiceRepository());
injector.registerSingleton(() => ApiChatRepository());
injector.registerSingleton(() => ApiScoreRepository());
injector.registerSingleton<AuthenticationBloc>((() =>
AuthenticationBloc(myUserRepository: injector.get<UserRepository>())));
injector.registerSingleton<MyUserBloc>(
(() => MyUserBloc(myUserRepository: injector.get<UserRepository>())));
injector.registerSingleton<ProfileBloc>(
(() => ProfileBloc(userRepository: injector.get<UserRepository>())));
injector.registerSingleton(
() => ProfessionalBloc(
professionalRepository: injector.get(),
userRepository: injector.get<UserRepository>()),
);
injector.registerSingleton(
() => NotificationBloc(
requestLocalNotificationPermission:
LocalNotifications.requestPermissionLocalNotifications,
showLocalNotification: LocalNotifications.showLocalNotification,
),
);
injector.registerDependency<SignInBloc>(
() => SignInBloc(userRepository: injector.get<UserRepository>()));
injector.registerDependency<SignUpBloc>(
() => SignUpBloc(userRepository: injector.get<UserRepository>()));
injector.registerDependency<SettingBloc>(
() => SettingBloc(userRepository: injector.get<UserRepository>()));
injector.registerDependency<AuthBloc>(
() => AuthBloc(userRepository: injector.get<UserRepository>()));
injector.registerSingleton<ProfessionalProfileBloc>(
() => ProfessionalProfileBloc(professionalRepository: injector.get()));
injector.registerDependency<ProfessionalListBloc>(
() => ProfessionalListBloc(
userRepository: injector.get<UserRepository>(),
firebaseProfessonalRepository:
injector.get<ApiProfessionalRepository>()),
);
injector.registerDependency<ChatBloc>(() => ChatBloc(
chatRepository: injector.get<ApiChatRepository>(),
));
injector.registerDependency<ServiceBloc>(
() => ServiceBloc(
serviceRepository: injector.get<ApiServiceRepository>(),
userRepository: injector.get<UserRepository>(),
professionRepository: injector.get<ApiProfessionalRepository>(),
),
);
injector.registerDependency<ScoreBloc>(
() => ScoreBloc(
scoreRepository: injector.get<ApiScoreRepository>(),
userRepository: injector.get<UserRepository>(),
),
);
}
}