65 lines
2.2 KiB
Dart
65 lines
2.2 KiB
Dart
import 'package:coda_project/data/datasources/attendance_remote_data_source.dart';
|
|
import 'package:coda_project/data/repositories/attendance_repository_impl.dart';
|
|
import 'package:coda_project/domain/repositories/attendance_repository.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import '../network/api_client.dart';
|
|
import '../../data/datasources/auth_remote_data_source.dart';
|
|
import '../../data/datasources/user_local_data_source.dart';
|
|
import '../../data/repositories/auth_repository_impl.dart';
|
|
import '../../domain/repositories/auth_repository.dart';
|
|
import '../../domain/usecases/login_usecase.dart';
|
|
import '../../domain/usecases/attendance_login_usecase.dart';
|
|
import '../../domain/usecases/attendance_logout_usecase.dart';
|
|
import '../../presentation/blocs/login/login_bloc.dart';
|
|
|
|
final sl = GetIt.instance;
|
|
|
|
Future<void> initializeDependencies() async {
|
|
// External
|
|
sl.registerLazySingleton<Dio>(() => Dio());
|
|
|
|
// SharedPreferences
|
|
final sharedPreferences = await SharedPreferences.getInstance();
|
|
sl.registerLazySingleton<SharedPreferences>(() => sharedPreferences);
|
|
|
|
// Core
|
|
sl.registerLazySingleton<ApiClient>(
|
|
() => ApiClient(dio: sl(), sharedPreferences: sl()),
|
|
);
|
|
|
|
// Data sources
|
|
sl.registerLazySingleton<AuthRemoteDataSource>(
|
|
() => AuthRemoteDataSourceImpl(apiClient: sl()),
|
|
);
|
|
|
|
sl.registerLazySingleton<UserLocalDataSource>(
|
|
() => UserLocalDataSourceImpl(sharedPreferences: sl()),
|
|
);
|
|
|
|
// Repositories
|
|
sl.registerLazySingleton<AuthRepository>(
|
|
() => AuthRepositoryImpl(remoteDataSource: sl(), localDataSource: sl()),
|
|
);
|
|
|
|
// Use cases
|
|
sl.registerLazySingleton(() => LoginUseCase(repository: sl()));
|
|
|
|
// Blocs
|
|
sl.registerFactory(() => LoginBloc(loginUseCase: sl()));
|
|
|
|
//Attendence
|
|
sl.registerLazySingleton<AttendanceRemoteDataSource>(
|
|
() => AttendanceRemoteDataSourceImpl(apiClient: sl()),
|
|
);
|
|
|
|
sl.registerLazySingleton<AttendanceRepository>(
|
|
() => AttendanceRepositoryImpl(remoteDataSource: sl()),
|
|
);
|
|
|
|
sl.registerLazySingleton(() => AttendanceLoginUsecase(repository: sl()));
|
|
|
|
sl.registerLazySingleton(() => AttendanceLogoutUseCase(repository: sl()));
|
|
}
|