import 'package:get_it/get_it.dart'; import 'package:holzleitner_api/holzleitner_api.dart'; import 'auth_token_provider.dart'; import 'backend_config.dart'; import 'holzleitner_api_factory.dart'; import 'keycloak_oidc_token_provider.dart'; /// Registriert das HTTP-/API-Subsystem im globalen GetIt-Locator. /// /// Aufruf bewusst nicht im AppBloc-Lifecycle, sondern in `main()` vor /// dem `runApp` — die API-Klassen sind über die gesamte App-Lebensdauer /// stabil. /// /// Phase B: produktiver `KeycloakOidcTokenProvider`. Die alte /// `DevPasswordGrantTokenProvider`-Implementation bleibt im Code (für /// das reine dart-Smoke-Tool, siehe `tool/smoke_test_api.dart`). void registerNetworking({ required GetIt locator, BackendConfig config = BackendConfig.fromEnvironment, }) { locator.registerSingleton(config); final provider = KeycloakOidcTokenProvider( config: config, issuerUrl: config.keycloakIssuerUrl, redirectUrl: config.keycloakRedirectUrl, ); // Doppelt registrieren: einmal unter der konkreten Klasse (für // den AuthBloc, der Login/Logout/Restore aufruft) und einmal hinter // dem Interface (für den HTTP-Interceptor). locator.registerSingleton(provider); locator.registerSingleton(provider); locator.registerSingleton( buildHolzleitnerApi( config: config, tokenProvider: locator(), ), ); }