48 lines
1.7 KiB
Dart
48 lines
1.7 KiB
Dart
import 'package:get_it/get_it.dart';
|
|
import 'api/api_client.dart';
|
|
import 'storage/token_store.dart';
|
|
import '../features/auth/data/auth_repository.dart';
|
|
import '../features/home/data/maps_repository.dart';
|
|
import '../features/home/data/tariff_repository.dart';
|
|
import '../features/home/data/ride_types_repository.dart';
|
|
import '../features/trip/data/trip_repository.dart';
|
|
import '../features/trip/data/trip_socket_service.dart';
|
|
import '../features/trip/data/trip_event_merger.dart';
|
|
import '../features/trip/data/fcm_service.dart';
|
|
|
|
final GetIt getIt = GetIt.instance;
|
|
|
|
/// حقن التبعيات (بديل bindings في GetX).
|
|
Future<void> setupDi() async {
|
|
getIt.registerLazySingleton<TokenStore>(() => TokenStore());
|
|
getIt.registerLazySingleton<ApiClient>(() => ApiClient(getIt<TokenStore>()));
|
|
getIt.registerLazySingleton<AuthRepository>(
|
|
() => AuthRepository(getIt<ApiClient>(), getIt<TokenStore>()),
|
|
);
|
|
|
|
// ميزات Phase 1: الخرائط + الأسعار
|
|
getIt.registerLazySingleton<MapsRepository>(
|
|
() => MapsRepository(getIt<ApiClient>()),
|
|
);
|
|
getIt.registerLazySingleton<TariffRepository>(
|
|
() => TariffRepository(getIt<ApiClient>()),
|
|
);
|
|
getIt.registerLazySingleton<RideTypesRepository>(
|
|
() => RideTypesRepository(getIt<ApiClient>()),
|
|
);
|
|
|
|
// ميزات Phase 2: الرحلات + WebSocket
|
|
getIt.registerLazySingleton<TripRepository>(
|
|
() => TripRepository(getIt<ApiClient>()),
|
|
);
|
|
getIt.registerLazySingleton<TripEventMerger>(
|
|
() => TripEventMerger(),
|
|
);
|
|
getIt.registerLazySingleton<TripSocketService>(
|
|
() => TripSocketService(getIt<TokenStore>(), getIt<TripEventMerger>()),
|
|
);
|
|
getIt.registerLazySingleton<FcmService>(
|
|
() => FcmService(getIt<TripEventMerger>()),
|
|
);
|
|
}
|