import 'package:rasadyar_auth/data/services/token_storage_service.dart'; import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart'; import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart'; import 'package:rasadyar_chicken/data/repositories/chicken_repository_imp.dart'; import 'package:rasadyar_chicken/hive_registrar.g.dart'; import 'package:rasadyar_core/core.dart'; GetIt diChicken = GetIt.instance; Future setupChickenDI() async { var tokenService = Get.find(); Hive.registerAdapters(); diChicken.registerLazySingleton(() => ChickenLocalDataSourceImp()); diChicken.get().openBox(); diChicken.registerLazySingleton( () => AppInterceptor( refreshTokenCallback: () async {}, saveTokenCallback: (String newToken) async { await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { await tokenService.deleteTokens(); }, ), instanceName: 'chickenInterceptor', ); tokenService.getBaseUrl(); diChicken.registerLazySingleton(() { return DioRemote( baseUrl: tokenService.baseurl.value, interceptors: diChicken.get(instanceName: 'chickenInterceptor'), ); }, instanceName: 'chickenDioRemote'); final dioRemote = diChicken.get(instanceName: 'chickenDioRemote'); await dioRemote.init(); diChicken.registerLazySingleton(() => ChickenRemoteDatasourceImp(dioRemote)); diChicken.registerLazySingleton( () => ChickenRepositoryImp( local: diChicken.get(), remote: diChicken.get(), ), ); diChicken.registerSingleton(ImagePicker()); }