import 'package:dio/dio.dart';

import 'package:together_mobile/models/init_get_it.dart';
import 'package:together_mobile/models/token_model.dart';

final baseOptions = BaseOptions(
  baseUrl: 'http://10.0.2.2:8000/api',
  connectTimeout: const Duration(seconds: 5),
  receiveTimeout: const Duration(seconds: 5),
);

var request = Dio(baseOptions)
  ..interceptors.add(
    InterceptorsWrapper(
      onRequest:
          (RequestOptions options, RequestInterceptorHandler handler) async {
        String baseUrl = options.baseUrl.replaceFirst('/api', '');
        options.baseUrl = baseUrl;
        if (getIt.get<Token>().token != '') {
          options.headers['Authorization'] =
              'Bearer ${getIt.get<Token>().token}';
        }
        return handler.next(options);
      },
      onResponse: (Response response, ResponseInterceptorHandler handler) {
        if (response.statusCode! >= 200 && response.statusCode! < 400) {
          if (response.headers.value('Authorization') != null) {
            // update token
            getIt
                .get<Token>()
                .updateToken(response.headers.value('Authorization')!);
          }
          return handler.resolve(response);
        } else {
          handler.reject(
            DioException.badResponse(
              statusCode: response.statusCode!,
              requestOptions: RequestOptions(),
              response: response,
            ),
          );
        }
      },
      onError: (DioException e, ErrorInterceptorHandler handler) {
        // print('错误信息:' + e.response?.data);
        // print('错误码: ${e.response?.statusCode}');
        handler.reject(e);
      },
    ),
  );