feat : auth live stock
This commit is contained in:
59
packages/livestock/lib/injection/live_stock_di.dart
Normal file
59
packages/livestock/lib/injection/live_stock_di.dart
Normal file
@@ -0,0 +1,59 @@
|
||||
import 'package:rasadyar_core/core.dart';
|
||||
import 'package:rasadyar_livestock/data/common/dio_exception_handeler.dart';
|
||||
import 'package:rasadyar_livestock/data/data_source/remote/auth/auth_remote.dart';
|
||||
import 'package:rasadyar_livestock/data/data_source/remote/auth/auth_remote_imp.dart';
|
||||
import 'package:rasadyar_livestock/data/repository/auth/auth_repository_imp.dart';
|
||||
import 'package:rasadyar_livestock/presentation/routes/app_pages.dart';
|
||||
|
||||
GetIt get diLiveStock => GetIt.instance;
|
||||
|
||||
Future setupLiveStockDI() async {
|
||||
diLiveStock.registerSingleton(DioErrorHandler());
|
||||
var tokenService = Get.find<TokenStorageService>();
|
||||
if (tokenService.baseurl.value == null) {
|
||||
await tokenService.saveBaseUrl('https://api.dam.rasadyar.net/');
|
||||
}
|
||||
diLiveStock.registerLazySingleton<AppInterceptor>(
|
||||
() => AppInterceptor(
|
||||
refreshTokenCallback: () async {
|
||||
var authRepository = diLiveStock.get<AuthRepositoryImp>();
|
||||
var hasAuthenticated = await authRepository.hasAuthenticated();
|
||||
if (hasAuthenticated) {
|
||||
var newToken = await authRepository.loginWithRefreshToken(
|
||||
authRequest: {'refresh': tokenService.refreshToken.value},
|
||||
);
|
||||
return newToken?.access;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
saveTokenCallback: (String newToken) async {
|
||||
await tokenService.saveAccessToken(newToken);
|
||||
},
|
||||
clearTokenCallback: () async {
|
||||
await tokenService.deleteTokens();
|
||||
Get.offAllNamed(LiveStockRoutes.auth, arguments: Module.liveStocks);
|
||||
},
|
||||
authArguments: Module.liveStocks,
|
||||
),
|
||||
);
|
||||
|
||||
// Register the DioRemote client
|
||||
diLiveStock.registerLazySingleton<DioRemote>(
|
||||
() => DioRemote(
|
||||
baseUrl: tokenService.baseurl.value,
|
||||
interceptors: diLiveStock.get<AppInterceptor>(),
|
||||
),
|
||||
);
|
||||
var dioRemoteClient = diLiveStock.get<DioRemote>();
|
||||
await dioRemoteClient.init();
|
||||
|
||||
// Register the AuthRemote data source implementation
|
||||
diLiveStock.registerLazySingleton<AuthRemoteDataSource>(
|
||||
() => AuthRemoteDataSourceImp(diLiveStock.get<DioRemote>()),
|
||||
);
|
||||
|
||||
// Register the AuthRepository implementation
|
||||
diLiveStock.registerLazySingleton<AuthRepositoryImp>(
|
||||
() => AuthRepositoryImp(diLiveStock.get<AuthRemoteDataSource>()),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user