createTransport function

Transport createTransport(
  1. AuthTokenProvider tokenProvider, {
  2. required String baseUrl,
  3. void onAuthFailure()?,
})

Creates a Connect RPC transport for the given baseUrl.

Requires an AuthTokenProvider to be available via Riverpod. Host apps must provide the authTokenProvider override.

Implementation

Transport createTransport(
  AuthTokenProvider tokenProvider, {
  required String baseUrl,
  void Function()? onAuthFailure,
}) {
  final authInterceptor = AuthInterceptor(tokenProvider, () {
    if (_globalAuthFailureFired) return;
    _globalAuthFailureFired = true;
    AppLogger.error('Auth failure — logging out');
    tokenProvider.logout();
    onAuthFailure?.call();
  });

  return protocol.Transport(
    baseUrl: baseUrl,
    codec: const ProtoCodec(),
    httpClient: createPlatformHttpClient(),
    interceptors: [authInterceptor.call],
    useHttpGet: false,
  );
}