75 lines
2.6 KiB
Dart
75 lines
2.6 KiB
Dart
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 {
|
|
diChicken.registerSingleton(DioErrorHandler());
|
|
var tokenService = Get.find<TokenStorageService>();
|
|
|
|
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',
|
|
);
|
|
|
|
diChicken.registerLazySingleton<DioRemote>(
|
|
() =>
|
|
DioRemote(interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor')),
|
|
);
|
|
|
|
final dioRemote = diChicken.get<DioRemote>();
|
|
await dioRemote.init();
|
|
|
|
diChicken.registerLazySingleton<AuthRemoteDataSourceImp>(
|
|
() => AuthRemoteDataSourceImp(diChicken.get<DioRemote>()),
|
|
);
|
|
|
|
diChicken.registerLazySingleton<AuthRepositoryImpl>(
|
|
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSourceImp>()),
|
|
);
|
|
}
|
|
|
|
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>()),
|
|
);
|
|
}
|
|
}
|