import 'package:kmobile/api/services/rtgs_service.dart'; import 'package:kmobile/api/services/neft_service.dart'; import 'package:kmobile/api/services/imps_service.dart'; import 'package:get_it/get_it.dart'; import 'package:dio/dio.dart'; import 'package:kmobile/api/services/beneficiary_service.dart'; import 'package:kmobile/api/services/payment_service.dart'; import 'package:kmobile/api/services/user_service.dart'; import 'package:kmobile/data/repositories/transaction_repository.dart'; import 'package:kmobile/features/auth/controllers/theme_cubit.dart'; import 'package:kmobile/features/auth/controllers/theme_mode_cubit.dart'; import '../api/services/auth_service.dart'; import '../api/interceptors/auth_interceptor.dart'; import '../data/repositories/auth_repository.dart'; import '../features/auth/controllers/auth_cubit.dart'; import '../security/secure_storage.dart'; final getIt = GetIt.instance; Future setupDependencies() async { //getIt.registerLazySingleton(() => ThemeController()); //getIt.registerLazySingleton(() => ThemeModeController()); getIt.registerSingleton(ThemeCubit()); getIt.registerSingleton(ThemeModeCubit()); // Register Dio client getIt.registerSingleton(_createDioClient()); // Register secure storage getIt.registerSingleton(SecureStorage()); // Register user service if needed getIt.registerSingleton(UserService(getIt())); // Register services getIt.registerSingleton(AuthService(getIt())); // Register repositories getIt.registerSingleton( AuthRepository( getIt(), getIt(), getIt()), ); getIt.registerSingleton( TransactionRepositoryImpl(getIt())); getIt.registerSingleton(PaymentService(getIt())); getIt.registerSingleton(BeneficiaryService(getIt())); getIt.registerSingleton(NeftService(getIt())); getIt.registerSingleton(RtgsService(getIt())); getIt.registerSingleton(ImpsService(getIt())); // Add auth interceptor after repository is available getIt().interceptors.add( AuthInterceptor(getIt(), getIt()), ); // Register controllers/cubits getIt.registerFactory( () => AuthCubit(getIt(), getIt())); } Dio _createDioClient() { final dio = Dio( BaseOptions( baseUrl: 'http://lb-test-mobile-banking-app-192209417.ap-south-1.elb.amazonaws.com:8080', //'http://localhost:8081', connectTimeout: const Duration(seconds: 5), receiveTimeout: const Duration(seconds: 10), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, ), ); // Add logging interceptor for development dio.interceptors.add(LogInterceptor( request: true, requestHeader: true, requestBody: true, responseHeader: true, responseBody: true, error: true, )); return dio; }