import 'package:rasadyar_auth/data/common/dio_error_handler.dart'; import 'package:rasadyar_auth/data/models/response/auth/auth_response_model.dart'; import 'package:rasadyar_auth/data/repositories/auth_repository_imp.dart'; import 'package:rasadyar_auth/data/services/token_storage_service.dart'; import 'package:rasadyar_core/core.dart'; import '../common/dio_manager.dart'; GetIt diAuth = GetIt.instance; Future setupAuthDI() async { diAuth.registerLazySingleton(() => DioRemoteManager()); diAuth.registerLazySingleton( () => AppInterceptor( refreshTokenCallback: () async { var tokenService = Get.find(); final authRepo = diAuth.get(); final refreshToken = tokenService.refreshToken.value; if (refreshToken == null) return null; final result = await authRepo.loginWithRefreshToken(authRequest: {"refresh_token": refreshToken}); if (result is AuthResponseModel) { await tokenService.saveAccessToken(result.access!); return result.access; } return null; }, ), ); diAuth.registerLazySingleton(() => DioRemote(interceptors: [diAuth.get()])); final dioRemote = diAuth.get(); await dioRemote.init(); diAuth.registerSingleton(AuthRepositoryImpl(dioRemote)); diAuth.registerLazySingleton(() => DioErrorHandler()); } Future newSetupAuthDI(String newUrl) async { diAuth.registerLazySingleton( () => DioRemote(baseUrl: newUrl, interceptors: [diAuth.get()]), instanceName: 'newRemote', ); final dioRemote = diAuth.get(instanceName: 'newRemote'); await dioRemote.init(); diAuth.registerSingleton(AuthRepositoryImpl(dioRemote), instanceName: 'newUrl'); }