import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_inspection/data/data_source/remote/auth/auth_remote.dart'; import 'package:rasadyar_inspection/data/data_source/remote/auth/auth_remote_imp.dart'; import 'package:rasadyar_inspection/data/data_source/remote/inspection/inspection_remote_imp.dart'; import 'package:rasadyar_inspection/data/data_source/remote/user/user_data_source_imp.dart'; import 'package:rasadyar_inspection/data/repositories/auth/auth_repository_imp.dart'; import 'package:rasadyar_inspection/data/repositories/inspection/inspection_repository_imp.dart'; import 'package:rasadyar_inspection/data/repositories/user/user_repository_imp.dart'; import 'package:rasadyar_inspection/data/utils/dio_exception_handeler.dart'; import 'package:rasadyar_inspection/presentation/routes/app_routes.dart'; GetIt diInspection = GetIt.instance; Future setupInspectionDI() async { diInspection.registerSingleton(DioErrorHandler()); var tokenService = Get.find(); if (tokenService.baseurl.value == null) { await tokenService.saveBaseUrl('https://bazrasbackend.rasadyaar.ir/'); } diInspection.registerLazySingleton( () => AppInterceptor( //TODO : Update the base URL to the correct one for inspection module refreshTokenCallback: () async => null, saveTokenCallback: (String newToken) async { await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { await tokenService.deleteTokens(); Get.offAllNamed(InspectionRoutes.auth, arguments: Module.inspection); }, authArguments: Module.inspection, ), instanceName: 'inspectionInterceptor', ); diInspection.registerLazySingleton(() { return DioRemote( baseUrl: tokenService.baseurl.value, interceptors: diInspection.get(instanceName: 'inspectionInterceptor'), ); }, instanceName: 'inspectionDioRemote'); var dioRemote = diInspection.get(instanceName: 'inspectionDioRemote'); await dioRemote.init(); diInspection.registerLazySingleton( () => AuthRemoteImp(diInspection.get(instanceName: 'inspectionDioRemote')), ); diInspection.registerSingleton( AuthRepositoryImpl(diInspection.get()), ); diInspection.registerSingleton( UserRemoteDataSourceImp(diInspection.get(instanceName: 'inspectionDioRemote')), ); diInspection.registerSingleton( UserRepositoryImp(diInspection.get()), ); diInspection.registerSingleton( InspectionRemoteDataSourceImp(diInspection.get(instanceName: 'inspectionDioRemote')), ); diInspection.registerSingleton( InspectionRepositoryImp(remoteDataSource: diInspection.get()), ); diInspection.registerSingleton(ImagePicker()); }