42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
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<BackendConfig>(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<KeycloakOidcTokenProvider>(provider);
|
|
locator.registerSingleton<AuthTokenProvider>(provider);
|
|
|
|
locator.registerSingleton<HolzleitnerApi>(
|
|
buildHolzleitnerApi(
|
|
config: config,
|
|
tokenProvider: locator<AuthTokenProvider>(),
|
|
),
|
|
);
|
|
}
|