energyManagementV3ApiProvider top-level property

FutureProvider<EnergyManagementV3Api> energyManagementV3ApiProvider
final

Provider for EnergyManagementV3Api

Uses the 'CLEAN_ENERGY_RDC2_BASE_URL' environment variable for the base url

Implementation

final energyManagementV3ApiProvider = FutureProvider(
  (ref) async {
    final api = EnergyManagementV3Api.create(
      baseUrl: Uri.parse(
        await ref.watch(_cleanEnergyRdc2UrlProvider.future),
      ),
      interceptors: [
        await ref.watch(authHeaderInterceptorProvider.future),
      ],
      authenticator: ref.watch(errorForwardingAuthenticatorProvider),
    );

    // Wire up authentication manager to delete the user's notification token
    // when the user logs out, by adding an onLogout callback.
    final deleteTokenCallback =
        ref.watch(deleteNotificationTokenUseCaseProvider);

    Future<void> onLogout(AuthUser<OAuthToken> user) {
      return deleteTokenCallback(api);
    }

    final authManager = await ref.watch(authManagerProvider.future);
    authManager.addLogoutCallback(onLogout);

    ref.onDispose(() => authManager.removeLogoutCallback(onLogout));

    return api;
  },
);