Solución filtro de language en Custom Sections de Audits#176
Solución filtro de language en Custom Sections de Audits#176caverav merged 2 commits intodevelopmentfrom
Conversation
📝 Walkthrough📝 WalkthroughWalkthroughEl cambio principal en esta solicitud de extracción se centra en la lógica de comparación para la selección del idioma de auditoría. Se modificó el Changes
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (2)
frontend/src/routes/audits/edit/sections/sections.tsx (2)
Line range hint
145-149: ¡El cambio de propiedad de comparación es correcto, pero falta manejo de errores!La modificación para usar
valueen lugar delabeles la solución correcta, ya queauditLanguagealmacena el código de localización y no el nombre mostrado del idioma. Sin embargo, el código actual no maneja adecuadamente el caso donde no se encuentra una coincidencia.Te sugiero implementar un manejo más robusto:
useEffect(() => { if (auditLanguage && languagesList.length > 0) { const matchedLanguage = languagesList.find( language => language.value === auditLanguage, ); if (matchedLanguage) { setCurrentLanguage(matchedLanguage); + } else { + console.error(`No se encontró el idioma: ${auditLanguage}`); + toast.error(t('err.languageNotFound')); + // Usar un idioma por defecto o manejar el error según la lógica de negocio } } }, [auditLanguage, languagesList]);
Line range hint
42-149: ¡La gestión de estado y efectos necesita optimización!El componente presenta varios puntos que requieren atención:
- Hay demasiados efectos interdependientes que podrían consolidarse
- El manejo de errores es inconsistente: algunos lugares usan toast.error y otros solo console.error
- La dependencia de fetchAuditSections con currentLanguage podría causar renders innecesarios
Recomendaciones de mejora:
- Consolida los efectos relacionados con la carga inicial:
useEffect(() => { const initializeData = async () => { try { const [languages, audit] = await Promise.all([ getLanguages(), getAuditById(auditId) ]); const languageNames = languages.datas.map((item: LanguageData, index: number) => ({ id: index, value: item.locale, label: item.language, })); setLanguagesList(languageNames); setAuditLanguage(audit.datas.language); } catch (error) { console.error('Error en la inicialización:', error); toast.error(t('err.initializationError')); } }; void initializeData(); }, [auditId]);
- Implementa un hook personalizado para manejar los errores de manera consistente:
const useErrorHandler = () => { return useCallback((error: Error, message: string) => { console.error(error); toast.error(t(message)); }, [t]); };
|
|
No es tan claro porque no lo especificaste, la gracia de esa sección es que podamos repetir los mismos pasos |
Descripción
Cambia el match de label a value, para hacerlo correctamente.
Motivación y Contexto
Soluciona Issue #156
¿Cómo ha sido probado?
npm run build
Tipos de cambios
Lista de verificación:
Summary by CodeRabbit
Mejoras
Corrección de errores