Skip to content

APPSRN-531 Agregar iconos rellenos store_filled y user_filled a janis-font-icon - #78

Open
pablonortiz wants to merge 2 commits into
masterfrom
APPSRN-531-actualizacion-de-iconos-rellenos
Open

APPSRN-531 Agregar iconos rellenos store_filled y user_filled a janis-font-icon#78
pablonortiz wants to merge 2 commits into
masterfrom
APPSRN-531-actualizacion-de-iconos-rellenos

Conversation

@pablonortiz

@pablonortiz pablonortiz commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Link al ticket

  • APPSRN-531
  • El rename de item_new a item (segundo commit) no tiene ticket propio — se suma acá para no partir en dos PRs el mismo selection.json.

Descripción del requerimiento

Este PR agrupa dos cambios sobre la misma fuente de iconos janis-font-icon:

1. Iconos rellenos (APPSRN-531). La vista de mapa de Route Sequencing (épica ATR-2131, historia APPSRN-530) necesita variantes rellenas de los iconos de local/recogida y cliente/entrega para diferenciar los pines en el mapa. El consumo desde las apps queda para otra tarea.

2. Rename item_newitem. Mauricio Oruezabal reportó en #apps-devs (28/07) que en la Lista de Productos de Orders el badge del product group aparece como ? en lugar del icono. Los clientes eligen ese icono desde el picker del admin de Views, cuyo catálogo (icons.json) lo nombra item, mientras nuestra fuente lo tenía nombrado item_new. react-native-vector-icons resuelve el nombre contra su mapa de glifos y, si no hay match, cae al fallback hardcodeado ? (glyphMap[name] || '?' en create-icon-set.js). Al alinear el nombre con Views, el icono resuelve.

Descripción de la solución

Iconos rellenos: se agregaron los glifos store_filled y user_filled al set de IcoMoon — nuevas entradas en selection.json y regeneración de los dos .ttf que empaquetan la fuente (src/fonts/janis-font-icon.ttf y su copia para Android en android/app/src/main/assets/fonts/janis-font-icon.ttf).

Rename: en selection.json, el icono con codepoint 59930 pasa de name: "item_new" a name: "item". Solo cambia la propiedad name: code, id (288) y order (1736) quedan intactos, y no había ningún icono previo llamado item, así que no hay colisión. Los .ttf no requieren cambio por este rename: no almacenan nombres de glifo, solo el mapeo codepoint → glifo, y el codepoint no se movió.

El Icon (src/components/atoms/Icon/index.tsx) resuelve los nombres disponibles dinámicamente desde selection.json vía createIconSetFromIcoMoon, sin un enum ni union type que mantener — los iconos nuevos quedan usables con <Icon name="store_filled" /> / <Icon name="user_filled" /> y el renombrado con <Icon name="item" />, sin tocar código del componente.

Balance final: 303 → 305 iconos (2 agregados, 1 renombrado, 0 eliminados). De los 303 preexistentes, ninguno cambió de code/id/order; el único cambio de name es el de este rename.

Se cruzaron los catálogos completos de iconos: Views tiene 276, este package pasa a 305. Antes del rename faltaba exactamente 1 de los de Views: item. Con este cambio, los 276 de Views existen en la fuente — no debería quedar ningún ? por configuración de cliente.

Nivel de pruebas requerido

Documentación y ejemplos

MARCAR NIVEL DESCRIPCIÓN CONDICIONES
[ ] CRÍTICO: Cambios Mayores Se consideran cambios que afectan partes fundamentales del sistema o funcionalidades que impactan múltiples módulos de la app. Generar APK para pruebas. Utilizar perfil regular. Realizar pruebas exhaustivas en todos los módulos afectados.
[ ] ALTO: Cambios moderados Cambios que afectan aspectos importantes pero no críticos de la aplicación. Se puede probar localmente, salvo que surja necesidad de crear un APK. Utilizar perfil regular para las pruebas.
[X] MEDIO: Cambios menores Cambios menores que impactan una parte del flujo o ajustes que no modifican la funcionalidad general. Validación localmente. Se puede usar perfil dev
[ ] BAJO: Ajustes Modificaciones pequeñas que no impactan el rendimiento o funcionalidad general de la app. Validación localmente. Se puede usar perfil dev

Se subió de BAJO a MEDIO respecto de la versión original de este PR: el rename ya no es un cambio puramente aditivo y afecta a consumidores existentes (ver "Datos extra").

¿Cómo se puede probar?

Caso a probar Resultado esperado Resultado obtenido Observaciones
Renderizar <Icon name="store_filled" /> Se muestra el glifo relleno de local, sin warning de glyph faltante pendiente -
Renderizar <Icon name="user_filled" /> Se muestra el glifo relleno de cliente, sin warning de glyph faltante pendiente -
Renderizar <Icon name="item" /> Se muestra el glifo del icono de producto (codepoint 59930), no el fallback ? pendiente Es el caso del bug reportado
Renderizar <Icon name="item_new" /> Ahora cae al fallback ? — el nombre viejo dejó de existir pendiente Confirma que el rename tomó efecto
Renderizar un icono existente (ej. wrong_way) Se sigue viendo igual que antes del cambio pendiente Chequea que no hubo corrimiento de código/id en la fuente
Ver el set completo en el story Icons de Storybook Los 305 iconos se ven correctamente, sin tofu/cuadro vacío pendiente storybook/stories/DesignStystem/Icons.stories.js

Evidencias, pruebas de cómo funciona

  • npm run test:coverage local con los dos commits aplicados: 62 suites / 333 tests / 11 snapshots OK, coverage 100%, tsc --noEmit sin errores.
  • El mismo rename se aplicó y se validó funcionalmente en janis-picking-app release-v1 (PR #1905, que tiene su propia copia de la fuente): 5/5 casos PASS en emulador Android, incluyendo el escenario del bug (badge de product group con icon: "item" renderizando el glifo en lugar de ?) y la no-regresión del resto del catálogo.

Link a la documentación

  • N/A

Datos extra a tener en cuenta

  • El rename es breaking para consumidores que usen item_new. Al momento de este PR hay dos: janis-wms-app (src/screens/SkuMovements/SkuMovementsSummary/index.js) y janis-picking-app en master (src/screens/Repack/components/OrderCard/index.js). Ambas están hoy en ui-native@2.3.0, así que no se rompen con el merge de este PR, pero al bumpear tienen que actualizar el nombre a item en el mismo PR del bump — si no, ese icono queda en ? sin ningún error visible. janis-delivery-app no usa item_new y sigue en la línea 1.x, no le afecta.
  • Al bumpear en las apps hay que copiar también el .ttf nuevo a sus assets nativos (necesario por los dos iconos agregados; el rename por sí solo no lo requiere).
  • El nombre de icono llega del backend por tres vías (productGroups[].icon, packageType.icon, settingGroups[].icon), y el rename cubre las tres. Por eso se optó por renombrar en la fuente en lugar de mapear itemitem_new en la lógica de product groups: un mapper ahí habría dejado afuera los otros dos orígenes.
  • De cara a futuras actualizaciones de la fuente: el selection.json de este repo es la fuente de verdad y ya tiene item. Si un export futuro se genera importando a IcoMoon un zip viejo, el rename se pierde en silencio.
  • Alcance acotado a ui-native: los iconos rellenos se agregan a la fuente, su consumo (pines del mapa de Route Sequencing) es de otra tarea.

CHANGELOG:

### Added
- Add `store_filled` and `user_filled` icons to the `janis-font-icon` font [APPSRN-531](https://janiscommerce.atlassian.net/browse/APPSRN-531)

### Changed
- Rename `item_new` icon to `item` in the `janis-font-icon` font, matching the name used in the Views icon catalog

@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 30467890191

Coverage remained the same at 100.0%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 806
Covered Lines: 806
Line Coverage: 100.0%
Relevant Branches: 738
Covered Branches: 738
Branch Coverage: 100.0%
Branches in Coverage %: Yes
Coverage Strength: 14.4 hits per line

💛 - Coveralls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants