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 für [config] im globalen /// GetIt-Locator. /// /// Aufgerufen vom `AppBloc`, sobald die Umgebung aus der Config-Datei /// feststeht — und erneut bei jedem Umgebungswechsel. Bereits registrierte /// Instanzen werden dann ersetzt; die App baut ihren Bloc-Baum danach neu /// auf, damit niemand mehr den alten Client festhält. void registerNetworking({ required GetIt locator, required BackendConfig config, }) { _replace(locator, 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). _replace(locator, provider); _replace(locator, provider); _replace( locator, buildHolzleitnerApi(config: config, tokenProvider: provider), ); } void _replace(GetIt locator, T instance) { if (locator.isRegistered()) { locator.unregister(); } locator.registerSingleton(instance); }