import 'package:rasadyar_chicken/chicken.dart'; import 'package:rasadyar_chicken/data/common/dio_error_handler.dart'; import 'package:rasadyar_chicken/data/data_source/remote/auth/auth_remote.dart'; import 'package:rasadyar_chicken/data/data_source/remote/auth/auth_remote_imp.dart'; import 'package:rasadyar_chicken/data/repositories/auth/auth_repository_imp.dart'; import 'package:rasadyar_core/core.dart'; GetIt diChicken = GetIt.instance; Future setupChickenDI() async { diChicken.registerSingleton(DioErrorHandler()); var tokenService = Get.find(); diChicken.registerLazySingleton( () => AppInterceptor( //فعلا سامانه مرغ برای رفرش توکن چیزی ندارد refreshTokenCallback: () async => null, saveTokenCallback: (String newToken) async { await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { await tokenService.deleteTokens(); Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken); }, ), instanceName: 'chickenInterceptor', ); diChicken.registerLazySingleton( () => DioRemote(interceptors: diChicken.get(instanceName: 'chickenInterceptor')), ); final dioRemote = diChicken.get(); await dioRemote.init(); diChicken.registerLazySingleton( () => AuthRemoteDataSourceImp(diChicken.get()), ); diChicken.registerLazySingleton( () => AuthRepositoryImpl(diChicken.get()), ); } Future newSetupAuthDI(String newUrl) async { var tokenService = Get.find(); if (tokenService.baseurl.value == null) { await tokenService.saveBaseUrl(newUrl); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton( () => DioRemote(baseUrl: newUrl, interceptors: diChicken.get()), ); final dioRemote = diChicken.get(); await dioRemote.init(); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton( () => AuthRemoteDataSourceImp(diChicken.get()), ); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton( () => AuthRepositoryImpl(diChicken.get()), ); } }