import 'package:rasadyar_chicken/chicken.dart'; import 'package:rasadyar_chicken/data/common/dio_error_handler.dart'; import 'package:rasadyar_chicken/data/data_source/local/chicken_local.dart'; import 'package:rasadyar_chicken/data/data_source/local/chicken_local_imp.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/data_source/remote/chicken/chicken_remote.dart'; import 'package:rasadyar_chicken/data/data_source/remote/chicken/chicken_remote_imp.dart'; import 'package:rasadyar_chicken/data/repositories/auth/auth_repository.dart'; import 'package:rasadyar_chicken/data/repositories/auth/auth_repository_imp.dart'; import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository.dart'; import 'package:rasadyar_chicken/data/repositories/chicken/chicken_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', ); var baseUrl = tokenService.baseurl.value; diChicken.registerLazySingleton( () => DioRemote( baseUrl: baseUrl, interceptors: diChicken.get(instanceName: 'chickenInterceptor'), ), ); final dioRemote = diChicken.get(); await dioRemote.init(); diChicken.registerLazySingleton( () => AuthRemoteDataSourceImp(dioRemote), ); diChicken.registerLazySingleton( () => AuthRepositoryImpl(diChicken.get()), ); diChicken.registerLazySingleton( () => ChickenRemoteDatasourceImp(diChicken.get()), ); diChicken.registerLazySingleton(() => ChickenLocalDataSourceImp()); diChicken.registerLazySingleton( () => ChickenRepositoryImp( remote: diChicken.get(), local: diChicken.get(), ), ); } Future newSetupAuthDI(String newUrl) async { tLog("setup 2"); 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(instanceName: 'chickenInterceptor'), ), ); 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()), ); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton( () => ChickenRemoteDatasourceImp(diChicken.get()), ); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton(() => ChickenLocalDataSourceImp()); } if (diChicken.isRegistered()) { await diChicken.unregister(); diChicken.registerLazySingleton( () => ChickenRepositoryImp( remote: diChicken.get(), local: diChicken.get(), ), ); } } Future removeChickenDI() async { if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered(instanceName: 'chickenInterceptor')) { diChicken.unregister(instanceName: 'chickenInterceptor'); } if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered()) { diChicken.unregister(); } }