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

75 lines
2.6 KiB
Dart
Raw Normal View History

2025-08-02 15:09:06 +03:30
import 'package:rasadyar_chicken/chicken.dart';
import 'package:rasadyar_chicken/data/common/dio_error_handler.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/repositories/auth/auth_repository_imp.dart';
import 'package:rasadyar_core/core.dart';
GetIt diChicken = GetIt.instance;
Future<void> setupChickenDI() async {
2025-08-02 15:09:06 +03:30
diChicken.registerSingleton(DioErrorHandler());
var tokenService = Get.find<TokenStorageService>();
diChicken.registerLazySingleton<AppInterceptor>(
() => AppInterceptor(
2025-07-23 08:44:14 +03:30
//فعلا سامانه مرغ برای رفرش توکن چیزی ندارد
refreshTokenCallback: () async => null,
saveTokenCallback: (String newToken) async {
2025-07-13 08:34:59 +03:30
await tokenService.saveAccessToken(newToken);
},
clearTokenCallback: () async {
await tokenService.deleteTokens();
Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken);
},
),
instanceName: 'chickenInterceptor',
);
2025-08-02 15:09:06 +03:30
diChicken.registerLazySingleton<DioRemote>(
() =>
DioRemote(interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor')),
);
2025-07-16 11:47:51 +03:30
2025-08-02 15:09:06 +03:30
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
2025-07-16 11:47:51 +03:30
2025-08-02 15:09:06 +03:30
diChicken.registerLazySingleton<AuthRemoteDataSourceImp>(
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
);
2025-07-16 11:47:51 +03:30
2025-08-02 15:09:06 +03:30
diChicken.registerLazySingleton<AuthRepositoryImpl>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSourceImp>()),
2025-07-16 11:47:51 +03:30
);
2025-08-02 15:09:06 +03:30
}
2025-06-21 17:01:37 +03:30
2025-08-02 15:09:06 +03:30
Future<void> newSetupAuthDI(String newUrl) async {
var tokenService = Get.find<TokenStorageService>();
if (tokenService.baseurl.value == null) {
await tokenService.saveBaseUrl(newUrl);
}
if (diChicken.isRegistered<DioRemote>()) {
await diChicken.unregister<DioRemote>();
diChicken.registerLazySingleton<DioRemote>(
() => DioRemote(baseUrl: newUrl, interceptors: diChicken.get<AppInterceptor>()),
);
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
}
if (diChicken.isRegistered<AuthRemoteDataSource>()) {
await diChicken.unregister<AuthRemoteDataSource>();
diChicken.registerLazySingleton<AuthRemoteDataSourceImp>(
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
);
}
if (diChicken.isRegistered<AuthRepositoryImpl>()) {
await diChicken.unregister<AuthRepositoryImpl>();
diChicken.registerLazySingleton<AuthRepositoryImpl>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
);
}
}