buildAuthFresh function

Fresh<AuthTokenModel> buildAuthFresh({
  1. required Dio refreshDio,
  2. required TokenStorage<AuthTokenModel> tokenStorage,
  3. required AppLogger logger,
})

Builds the Fresh token-refresh wrapper used by the authenticated Dio client, bundling both the tokenHeader closure and the refreshToken callback (TokenRefresher.refresh) into a single, independently testable unit — rather than constructing Fresh inline in DI setup.

Implementation

Fresh<AuthTokenModel> buildAuthFresh({required Dio refreshDio, required TokenStorage<AuthTokenModel> tokenStorage, required AppLogger logger}) {
  final TokenRefresher tokenRefresher = TokenRefresher(logger: logger);

  return Fresh<AuthTokenModel>(
    httpClient: refreshDio,
    tokenStorage: tokenStorage,
    tokenHeader: (AuthTokenModel token) => <String, String>{'Authorization': '${token.tokenType} ${token.accessToken}'},
    refreshToken: tokenRefresher.refresh,
  );
}