import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart'; import 'package:rasadyar_auth/data/services/token_storage_service.dart'; import 'package:rasadyar_auth/presentation/routes/pages.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 => null, saveTokenCallback: (String newToken) async { await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { await tokenService.deleteTokens(); Get.offAllNamed(AuthPaths.auth, arguments: Module.chicken); }, authArguments: Module.chicken, ), 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()); }