unselectProductImage static method
Future<void>
unselectProductImage({
- required String barcode,
- required ImageField imageField,
- required OpenFoodFactsLanguage language,
- required User user,
- 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"');
}
}