Files
rasadyar_application/packages/chicken/lib/data/di/chicken_di.dart

56 lines
2.0 KiB
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_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_core/core.dart';
GetIt diChicken = GetIt.instance;
Future<void> setupChickenDI() async {
var tokenService = Get.find<TokenStorageService>();
Hive.registerAdapters();
diChicken.registerLazySingleton<ChickenLocalDataSourceImp>(() => ChickenLocalDataSourceImp());
diChicken.get<ChickenLocalDataSourceImp>().openBox();
diChicken.registerLazySingleton<AppInterceptor>(
() => AppInterceptor(
//فعلا سامانه مرغ برای رفرش توکن چیزی ندارد
refreshTokenCallback: () async => null,
saveTokenCallback: (String newToken) async {
await tokenService.saveAccessToken(newToken);
},
clearTokenCallback: () async {
await tokenService.deleteTokens();
Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken);
},
authArguments: Module.chicken,
),
instanceName: 'chickenInterceptor',
);
tokenService.getBaseUrl();
diChicken.registerLazySingleton<DioRemote>(() {
return DioRemote(
baseUrl: tokenService.baseurl.value,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
);
}, instanceName: 'chickenDioRemote');
final dioRemote = diChicken.get<DioRemote>(instanceName: 'chickenDioRemote');
await dioRemote.init();
diChicken.registerLazySingleton(() => ChickenRemoteDatasourceImp(dioRemote));
diChicken.registerLazySingleton<ChickenRepositoryImp>(
() => ChickenRepositoryImp(
local: diChicken.get<ChickenLocalDataSourceImp>(),
remote: diChicken.get<ChickenRemoteDatasourceImp>(),
),
);
diChicken.registerSingleton(ImagePicker());
}