unselectProductImage static method

Future<void> unselectProductImage({
  1. required String barcode,
  2. required ImageField imageField,
  3. required OpenFoodFactsLanguage language,
  4. required User user,
  5. UriProductHelper uriHelper = uriHelperFoodProd,
})

Unselect a product image.

Typically, after that the openfoodfacts web page will not show the image as selected for this product x imagefield x language anymore. Throws an exception if not successful. Will work OK even when there was no previous selected product image.

Implementation

static Future<void> unselectProductImage({
  required final String barcode,
  required final ImageField imageField,
  required final OpenFoodFactsLanguage language,
  required final User user,
  final UriProductHelper uriHelper = uriHelperFoodProd,
}) async {
  final String id = '${imageField.offTag}_${language.offTag}';
  final Uri uri = uriHelper.getPostUri(
    path: 'cgi/product_image_unselect.pl',
  );
  final Map<String, String> queryParameters = <String, String>{
    'code': barcode,
    'id': id,
  };

  final Response response = await HttpHelper().doPostRequest(
    uri,
    queryParameters,
    user,
    uriHelper: uriHelper,
    addCredentialsToBody: true,
  );
  if (response.statusCode != 200) {
    throw Exception(
        'Bad response (${response.statusCode}): ${response.body}');
  }
  final Map<String, dynamic> json =
      HttpHelper().jsonDecode(response.body) as Map<String, dynamic>;
  final String status = json['status'];
  if (status != 'status ok') {
    throw Exception('Status not ok ($status)');
  }
  final int statusCode = json['status_code'];
  if (statusCode != 0) {
    throw Exception('Status Code not ok ($statusCode)');
  }
  final String imagefield = json['imagefield'];
  if (imagefield != id) {
    throw Exception(
        'Different imagefield: expected "$id", actual "$imageField"');
  }
}