fix : di Chicken

This commit is contained in:
2025-09-01 12:04:19 +03:30
parent 1a7c09aa55
commit 079b3ce78d

View File

@@ -68,63 +68,59 @@ Future<void> setupChickenDI() async {
}
Future<void> newSetupAuthDI(String newUrl) async {
tLog("setup 2");
var tokenService = Get.find<TokenStorageService>();
if (tokenService.baseurl.value == null) {
await tokenService.saveBaseUrl(newUrl);
}
// همیشه baseUrl جدید رو ذخیره کن
await tokenService.saveBaseUrl(newUrl);
// Re-register AppInterceptor
if (diChicken.isRegistered<AppInterceptor>(instanceName: 'chickenInterceptor')) {
await diChicken.unregister<AppInterceptor>(instanceName: 'chickenInterceptor');
}
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);
},
),
instanceName: 'chickenInterceptor',
);
// Re-register DioRemote
if (diChicken.isRegistered<DioRemote>()) {
await diChicken.unregister<DioRemote>();
diChicken.registerLazySingleton<DioRemote>(
() => DioRemote(
baseUrl: newUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
),
);
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
}
diChicken.registerLazySingleton<DioRemote>(
() => DioRemote(
baseUrl: newUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
),
);
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
if (diChicken.isRegistered<AuthRemoteDataSource>()) {
await diChicken.unregister<AuthRemoteDataSource>();
diChicken.registerLazySingleton<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
);
}
if (diChicken.isRegistered<AuthRepository>()) {
await diChicken.unregister<AuthRepository>();
diChicken.registerLazySingleton<AuthRepository>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
);
}
if (diChicken.isRegistered<ChickenRemoteDatasource>()) {
await diChicken.unregister<ChickenRemoteDatasource>();
diChicken.registerLazySingleton<ChickenRemoteDatasource>(
() => ChickenRemoteDatasourceImp(diChicken.get<DioRemote>()),
);
}
if (diChicken.isRegistered<ChickenLocalDataSource>()) {
await diChicken.unregister<ChickenLocalDataSource>();
diChicken.registerLazySingleton<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
}
if (diChicken.isRegistered<ChickenRepository>()) {
await diChicken.unregister<ChickenRepository>();
diChicken.registerLazySingleton<ChickenRepository>(
() => ChickenRepositoryImp(
remote: diChicken.get<ChickenRemoteDatasource>(),
local: diChicken.get<ChickenLocalDataSource>(),
),
);
}
// Re-register dependent layers
await reRegister<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote));
await reRegister<AuthRepository>(() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()));
await reRegister<ChickenRemoteDatasource>(() => ChickenRemoteDatasourceImp(dioRemote));
await reRegister<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
await reRegister<ChickenRepository>(() => ChickenRepositoryImp(
remote: diChicken.get<ChickenRemoteDatasource>(),
local: diChicken.get<ChickenLocalDataSource>(),
));
}
Future<void> reRegister<T extends Object>(T Function() factory) async {
if (diChicken.isRegistered<T>()) {
await diChicken.unregister<T>();
}
diChicken.registerLazySingleton<T>(factory);
}
Future<void> removeChickenDI() async {
if (diChicken.isRegistered<DioErrorHandler>()) {
diChicken.unregister<DioErrorHandler>();