contentoh-components-library 21.6.43 → 21.6.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,12 +54,31 @@ var getRetailerServices = /*#__PURE__*/function () {
54
54
  descriptions = JSON.parse(responseArray[1].data.body).data;
55
55
  images = JSON.parse(responseArray[2].data.body).data;
56
56
  images.values = images === null || images === void 0 ? void 0 : (_images$values = images.values) === null || _images$values === void 0 ? void 0 : _images$values.map(function (value) {
57
- var _images$inputs$find;
58
-
59
- value.name = (_images$inputs$find = images.inputs.find(function (e) {
60
- return e.id === value.image_id;
57
+ var _value$image_id, _images$inputs$find;
58
+
59
+ /**
60
+ * La fila de `rel_article_image` trae la columna `id_image`; el resto del
61
+ * front lee `image_id`. Sin normalizarlo aquí queda `undefined`, y eso
62
+ * rompe DOS cosas a la vez:
63
+ *
64
+ * - `getImage` toma su rama `else` y deja `src` con la clave cruda de
65
+ * S3 en lugar de la URL de CloudFront, así que la etiqueta <img>
66
+ * apunta a una ruta relativa.
67
+ * - el filtro `filteredValues` de `RetailerProductEdition` compara
68
+ * `value.image_id` contra las reglas del retailer, no encuentra
69
+ * coincidencia y descarta la imagen.
70
+ *
71
+ * Resultado: la pantalla dice «Este producto no tiene imágenes» aunque la
72
+ * fila exista y el archivo esté en S3. Antes de guardar sí se veía, porque
73
+ * el objeto que arma el front al elegir el archivo sí trae `image_id`.
74
+ */
75
+ var normalized = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
76
+ image_id: (_value$image_id = value.image_id) !== null && _value$image_id !== void 0 ? _value$image_id : value.id_image
77
+ });
78
+ normalized.name = (_images$inputs$find = images.inputs.find(function (e) {
79
+ return e.id === normalized.image_id;
61
80
  })) === null || _images$inputs$find === void 0 ? void 0 : _images$inputs$find.name;
62
- return getImage(value);
81
+ return getImage(normalized);
63
82
  });
64
83
  return _context.abrupt("return", [datasheets, descriptions, images]);
65
84
 
@@ -88,7 +107,14 @@ var getImage = function getImage(imageGeneral) {
88
107
  var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 250;
89
108
 
90
109
  try {
91
- var image = imageGeneral;
110
+ var _imageGeneral$image_i;
111
+
112
+ // `id_image` es el nombre de la columna en base de datos; `image_id` el que
113
+ // usa el front. Se acepta cualquiera de los dos para que la URL se arme
114
+ // igual, venga la imagen del backend o del estado local.
115
+ var image = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, imageGeneral), {}, {
116
+ image_id: (_imageGeneral$image_i = imageGeneral.image_id) !== null && _imageGeneral$image_i !== void 0 ? _imageGeneral$image_i : imageGeneral.id_image
117
+ });
92
118
  var ext = image.src.split(".");
93
119
  var uuid = ext[0].split("-");
94
120
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, image), {}, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "contentoh-components-library",
3
- "version": "21.6.43",
3
+ "version": "21.6.44",
4
4
  "dependencies": {
5
5
  "@aws-amplify/auth": "^4.5.3",
6
6
  "@aws-amplify/datastore": "^3.11.0",
@@ -35,8 +35,30 @@ export const getRetailerServices = async (
35
35
  const images = JSON.parse(responseArray[2].data.body).data;
36
36
 
37
37
  images.values = images?.values?.map((value) => {
38
- value.name = images.inputs.find((e) => e.id === value.image_id)?.name;
39
- return getImage(value);
38
+ /**
39
+ * La fila de `rel_article_image` trae la columna `id_image`; el resto del
40
+ * front lee `image_id`. Sin normalizarlo aquí queda `undefined`, y eso
41
+ * rompe DOS cosas a la vez:
42
+ *
43
+ * - `getImage` toma su rama `else` y deja `src` con la clave cruda de
44
+ * S3 en lugar de la URL de CloudFront, así que la etiqueta <img>
45
+ * apunta a una ruta relativa.
46
+ * - el filtro `filteredValues` de `RetailerProductEdition` compara
47
+ * `value.image_id` contra las reglas del retailer, no encuentra
48
+ * coincidencia y descarta la imagen.
49
+ *
50
+ * Resultado: la pantalla dice «Este producto no tiene imágenes» aunque la
51
+ * fila exista y el archivo esté en S3. Antes de guardar sí se veía, porque
52
+ * el objeto que arma el front al elegir el archivo sí trae `image_id`.
53
+ */
54
+ const normalized = {
55
+ ...value,
56
+ image_id: value.image_id ?? value.id_image,
57
+ };
58
+ normalized.name = images.inputs.find(
59
+ (e) => e.id === normalized.image_id
60
+ )?.name;
61
+ return getImage(normalized);
40
62
  });
41
63
 
42
64
  return [datasheets, descriptions, images];
@@ -47,7 +69,13 @@ export const getRetailerServices = async (
47
69
 
48
70
  export const getImage = (imageGeneral, width = 250, height = 250) => {
49
71
  try {
50
- const image = imageGeneral;
72
+ // `id_image` es el nombre de la columna en base de datos; `image_id` el que
73
+ // usa el front. Se acepta cualquiera de los dos para que la URL se arme
74
+ // igual, venga la imagen del backend o del estado local.
75
+ const image = {
76
+ ...imageGeneral,
77
+ image_id: imageGeneral.image_id ?? imageGeneral.id_image,
78
+ };
51
79
  const ext = image.src.split(".");
52
80
  const uuid = ext[0].split("-");
53
81
  return {