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( () => 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; }, saveTokenCallback: (String newToken) async { // }, clearTokenCallback: () async { //await tokenService.clearTokens(); // حذف همه توکن‌ها }, ), ); 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', ); }