fix : di Chicken
This commit is contained in:
@@ -68,63 +68,59 @@ Future<void> setupChickenDI() async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> newSetupAuthDI(String newUrl) async {
|
Future<void> newSetupAuthDI(String newUrl) async {
|
||||||
tLog("setup 2");
|
|
||||||
var tokenService = Get.find<TokenStorageService>();
|
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>()) {
|
if (diChicken.isRegistered<DioRemote>()) {
|
||||||
await diChicken.unregister<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>()) {
|
// Re-register dependent layers
|
||||||
await diChicken.unregister<AuthRemoteDataSource>();
|
await reRegister<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote));
|
||||||
diChicken.registerLazySingleton<AuthRemoteDataSource>(
|
await reRegister<AuthRepository>(() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()));
|
||||||
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
|
await reRegister<ChickenRemoteDatasource>(() => ChickenRemoteDatasourceImp(dioRemote));
|
||||||
);
|
await reRegister<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
|
||||||
}
|
await reRegister<ChickenRepository>(() => ChickenRepositoryImp(
|
||||||
|
remote: diChicken.get<ChickenRemoteDatasource>(),
|
||||||
if (diChicken.isRegistered<AuthRepository>()) {
|
local: diChicken.get<ChickenLocalDataSource>(),
|
||||||
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>(),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
Future<void> removeChickenDI() async {
|
||||||
if (diChicken.isRegistered<DioErrorHandler>()) {
|
if (diChicken.isRegistered<DioErrorHandler>()) {
|
||||||
diChicken.unregister<DioErrorHandler>();
|
diChicken.unregister<DioErrorHandler>();
|
||||||
|
|||||||
Reference in New Issue
Block a user