create static method

Dio create({
  1. required AppConfig config,
  2. required TokenManager tokenManager,
  3. required Future<bool> onUnauthorized(),
})

Implementation

static Dio create({
  required AppConfig config,
  required TokenManager tokenManager,
  required Future<bool> Function() onUnauthorized,
}) {
  final dio = Dio(
    BaseOptions(
      baseUrl: '${config.apiBaseUrl}/${config.apiVersion}',
      connectTimeout: Duration(milliseconds: config.connectTimeoutMs),
      receiveTimeout: Duration(milliseconds: config.receiveTimeoutMs),
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
    ),
  );

  dio.interceptors.addAll([
    bp.LogInterceptor(),
    AuthInterceptor(
      dio: dio,
      tokenManager: tokenManager,
      onRefresh: onUnauthorized,
      publicEndpoints: config.endpoints.publicEndpoints,
    ),
    // ErrorInterceptor(
    //   dio,
    //   tokenManager,
    //   onUnauthorized,
    //   publicEndpoints: config.endpoints.publicEndpoints,
    // ),
  ]);

  return dio;
}