removeCouponFromStoreCart method

Future<StoreCart> removeCouponFromStoreCart({
  1. required String code,
  2. String? bearerToken,
  3. bool? useFaker,
})

Remove coupon from cart

code Coupon code (required) bearerToken Optional Bearer token for authenticated users useFaker Fakes the API request

Returns the full cart object response

Implementation

Future<StoreCart> removeCouponFromStoreCart({
  required String code,
  String? bearerToken,
  bool? useFaker,
}) async {
  final isUsingFaker = useFaker ?? this.useFaker;

  if (isUsingFaker) {
    return StoreCart.fake();
  }

  try {
    final originalBaseUrl = dio.options.baseUrl;
    dio.options.baseUrl = '$baseUrl/wp-json/wc/store/v1';
    dio.options.headers = {};
    final headers = await _buildStoreApiHeaders(bearerToken: bearerToken);

    final response = await dio.post(
      _StoreCartEndpoints.removeCoupon,
      options: Options(headers: headers),
      queryParameters: {'code': code},
    );

    await _extractAndStoreCartToken(response, bearerToken: bearerToken);
    dio.options.baseUrl = originalBaseUrl;

    if (response.statusCode != null &&
        response.statusCode! >= 200 &&
        response.statusCode! < 300) {
      return StoreCart.fromJson(response.data);
    } else {
      final errorMsg =
          response.data["message"] ??
          "API call failed with status code: ${response.statusCode}";
      throw Exception(errorMsg.toString().cleanErrorMessage);
    }
  } on DioException catch (e) {
    final errorMsg = e.response?.data["message"] ?? e.message;
    throw Exception(errorMsg.toString().cleanErrorMessage);
  } catch (e) {
    throw Exception(e.toString().cleanErrorMessage);
  }
}